zoukankan      html  css  js  c++  java
  • .net core系列之《.net core中使用MySql以及Dapper》

    当我们决定使用.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();
            }

     结果如下:

  • 相关阅读:
    ThreadLocal分析学习
    探究.NET的bin引用程序集运行机制看.NET程序集部署原理
    ASP.NET网页代码模型分析
    JBPM与设计模式之职责链模式
    根据webform页面大小的变化动态调整控件的大小
    jbpm binding类深入解析
    JBPM与软件架构模式之命令模式
    JBPM对象主键生成机制
    主键思维定势导致的惨案
    电脑安装windows server 2008 导致磁盘分区消失解决方法
  • 原文地址:https://www.cnblogs.com/hhzblogs/p/9732636.html
Copyright © 2011-2022 走看看