• .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();
            }

     结果如下:

  • 相关阅读:
    关于PDF.NET开发框架对Mysql Sqlite PostgreSQL数据库分页支持的个人看法
    【山外转载】如何高效的学习技术
    【山外笔记-四级计算机网络】第1章 网络技术基础
    【山外笔记-云原生】《Docker+Kubernetes应用开发与快速上云》读书笔记-2020.04.25(六)
    【山外笔记-数据库】Memcached教程详解
    【山外问道】什么是UUID
    【山外问道】Linux UUID的查询方法
    【山外笔记-SVN命令】svnlook命令详解
    【山外笔记-SVN命令】svn命令详解
    【山外笔记-工具框架】SVN版本控制系统
  • 原文地址:https://www.cnblogs.com/hhzblogs/p/9732636.html
Copyright © 2020-2023  润新知