當我們決定使用.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(); }
結果如下: