每天学习一点点,成功增加一大步

.Net Core 笔记:mysql 的基本使用

C# zhanghui 536℃

昨今两天研究了下 .Net core 对数据库 mysql 的访问,学习一门语言对其数据库访问与使用也是必须了解之一的功课。数据库虽然也可以是微软自家的 Sql Server ,但就博主目前而言平时都使用 mysql 的场景,所以暂时就不对 SqlServer 写什么了,以后遇到了再去研究处理。

在写代码之前首先就做 MySql.Data 依赖库的安装与引入的工作,这个可以通过 NuGet 来操作,这步不知道怎么做的可以看一下前面的博文

.Net Core 笔记: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 的基本使用