当我们决定使用.Net Core开发的时候,就放弃使用SqlServer的打算吧。那应该选择哪个数据库呢?一般选择MySql的比较多。
接下来我们来演示在.Net Core中使用MySQL吧。
1、原生模式(不要忘记安装 MySql.Data )
class Users{public int Id { get; set; }public string Name { get; set; }public string UserName { get; set; }public string Password { get; set; }public string Email { get; set; }}
static void Main(string[] args){var connString = "server=192.168.254.135;userid=root;pwd=123456;port=3306;database=Sample;SslMode=none;";string sql = "SELECT * FROM Users";List<Users> users = new List<Users>();using (MySqlConnection conn = new MySqlConnection(connString)){conn.Open();using (MySqlCommand cmd = new MySqlCommand(sql, conn)){MySqlDataReader dr = cmd.ExecuteReader();while (dr.Read()){users.Add(new Users{Id = Convert.ToInt32(dr["Id"]),Name = dr["Name"].ToString(),UserName = dr["UserName"].ToString(),Password = dr["Password"].ToString(),Email = dr["Email"].ToString(),});}}}users.ForEach(u =>{Console.WriteLine($"{u.Id}. 姓名:{u.Name},用户名:{u.UserName}");});Console.ReadKey();}
结果如下:
2、MySqlHelper类:MySql.Data命名空间下为我们封装好了一个MySqlHelper类,一些基本常用的操作都给我们封装好了
static void Main(string[] args){var connString = "server=192.168.254.135;userid=root;pwd=123456;port=3306;database=Sample;SslMode=none;";string sql = "INSERT INTO Users(Name,UserName,Password,Email) VALUES ('tangsan','tangsan','123456','55@qq.com')";List<Users> users = new List<Users>();int result = MySqlHelper.ExecuteNonQuery(connString, sql);Console.WriteLine($"result={result}");sql = "SELECT * FROM Users";MySqlDataReader dr = MySqlHelper.ExecuteReader(connString, sql);while (dr.Read()){users.Add(new Users{Id = Convert.ToInt32(dr["Id"]),Name = dr["Name"].ToString(),UserName = dr["UserName"].ToString(),Password = dr["Password"].ToString(),Email = dr["Email"].ToString(),});}users.ForEach(u =>{Console.WriteLine($"{u.Id}. 姓名:{u.Name},用户名:{u.UserName}");});Console.ReadKey();}
结果如下:
由上面的代码可以看出,动作查询还是很方便的,但是查询一个集合的时候还是挺麻烦的,接下来我们用Dapper来试试吧:
我们可以看出这个类是没有扩展方法的,现在我们打开NuGet安装包安装Dapper后再来看看
这就是Dapper为MySqlConnection类封装的扩展类。
static void Main(string[] args){var connString = "server=192.168.254.135;userid=root;pwd=123456;port=3306;database=Sample;SslMode=none;";string sql = "SELECT * FROM Users";IEnumerable<Users> users = new List<Users>();{using (MySqlConnection conn = new MySqlConnection(connString)){conn.Open();users= conn.Query<Users>(sql);}users.ToList().ForEach(u =>{Console.WriteLine($"{u.Id}. 姓名:{u.Name},用户名:{u.UserName}");});}Console.ReadKey();}
结果如下: