昨今两天研究了下 .Net core 对数据库 mysql 的访问,学习一门语言对其数据库访问与使用也是必须了解之一的功课。数据库虽然也可以是微软自家的 Sql Server ,但就博主目前而言平时都使用 mysql 的场景,所以暂时就不对 SqlServer 写什么了,以后遇到了再去研究处理。
在写代码之前首先就做 MySql.Data 依赖库的安装与引入的工作,这个可以通过 NuGet 来操作,这步不知道怎么做的可以看一下前面的博文
下面的代码是练习的过程实践的。
using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Microsoft.AspNetCore.Mvc; using Newtonsoft.Json.Linq; using MySql.Data.MySqlClient; using System.Collections; using System.Data; namespace NetCode.Controllers { [Route("api/[controller]")] public class ValuesController : Controller { // <summary> // 连接数据库 // </summary> // <param name="value"></param> // <returns></returns> [HttpPost] public dynamic Post([FromBody]JObject value) { MySqlConnection msc = new MySqlConnection { ConnectionString = "server=127.0.0.1;database=test;uid=root;pwd=123456;SslMode=none;charset='utf8'" }; // 插入单条数据 // this.insert(msc, "张三", 21, DateTime.Now); // string name = (string) value["name"]; // int age = (int) value["age"]; // NoResult.Data = this.insert(msc, name, age, DateTime.Now); // 插入多条数据 // this.insertCollection(msc); // 修改数据 // this.update(msc, "风帆", // 删除数据 // this.delete(msc, 4); // 简单搜索 // this.search(msc); // 简单事务 // this.transaction(msc); // 存储过程 // this.storedProcedure(msc); return new { value }; } // <summary> // 插入单条数据 // </summary> // <param name="msc"></param> // <param name="name"></param> // <param name="age"></param> // <param name="time"></param> // <returns></returns> private int insert(MySqlConnection msc, string name, int age, DateTime time) { msc.Open(); MySqlCommand mc = new MySqlCommand($"insert into user values (null,'{name}','{age}','{time}');", msc); int count = mc.ExecuteNonQuery(); msc.Close(); return count; } // <summary> // 插入多条数据 // </summary> // <param name="msc"></param> private void insertCollection(MySqlConnection msc) { msc.Open(); MySqlCommand mc = new MySqlCommand(); mc.Connection = msc; mc.CommandText = "INSERT INTO user VALUES (null,?name,?age,?birthday)"; mc.Parameters.Add("?name", MySqlDbType.VarChar); mc.Parameters.Add("?age", MySqlDbType.Int16); mc.Parameters.Add("?birthday", MySqlDbType.DateTime); Random random = new Random(); for (var i = 0; i < 10; i++) { mc.Parameters[0].Value = "name" + i; mc.Parameters[1].Value = random.Next(10, 99); mc.Parameters[2].Value = DateTime.Now; mc.ExecuteNonQuery(); } mc.ExecuteNonQuery(); mc.Clone(); } // <summary> // 修改数据 // </summary> // <param name="msc"></param> // <param name="newName"></param> // <param name="id"></param> // <returns></returns> private int update(MySqlConnection msc, string newName, int id) { msc.Open(); MySqlCommand mc = new MySqlCommand($"update user set name = '{newName}' where id = '{id}';", msc); int count = mc.ExecuteNonQuery(); msc.Close(); return count; } // <summary> // 删除数据 // </summary> // <param name="msc"></param> // <param name="id"></param> // <returns></returns> private int delete(MySqlConnection msc, int id) { msc.Open(); MySqlCommand mc = new MySqlCommand($"delete from user where id = '{id}';", msc); int count = mc.ExecuteNonQuery(); msc.Close(); return count; } // <summary> // 简单搜索 // </summary> // <param name="msc"></param> private void search(MySqlConnection msc) { msc.Open(); MySqlCommand mc = new MySqlCommand("select * from user;", msc); using (MySqlDataReader reader = mc.ExecuteReader()) { System.Console.WriteLine("id\t\tname"); while (reader.Read()) { string row = $"{reader["id"]}\t\t{reader["name"]}"; System.Console.WriteLine(row); } } } // <summary> // 简单事务 // </summary> // <param name="msc"></param> private void transaction(MySqlConnection msc) { msc.Open(); MySqlTransaction transaction = msc.BeginTransaction(); try { MySqlCommand cmd = new MySqlCommand("delete from user;", msc, transaction); cmd.ExecuteNonQuery(); transaction.Rollback(); transaction = msc.BeginTransaction(); cmd = new MySqlCommand($"insert into user values (null,'甲六',25,'{DateTime.Now}');", msc, transaction); cmd.ExecuteNonQuery(); transaction.Commit(); } catch (Exception) { transaction.Rollback(); } msc.Clone(); } // <summary> // 存储过程 // </summary> // <param name="msc"></param> private void storedProcedure(MySqlConnection msc) { msc.Open(); MySqlCommand command = new MySqlCommand("存储过程名字", msc); command.CommandType = CommandType.StoredProcedure; IAsyncResult asyncResult = command.BeginExecuteNonQuery(); msc.Close(); } } }
注:刚开始在做插入数据实验时遇到了连接MySQL异常:The host localhost does not support SSL connections.
那是因为我在刚开始时使用的连接字符是
server=127.0.0.1;database=test;uid=root;pwd=123456;charset='utf8'
后来改成了这样就 OK 了
server=127.0.0.1;database=test;uid=root;pwd=123456;SslMode=none;charset='utf8'
转载请注明:隨習筆記 » .Net Core 笔记:mysql 的基本使用