C# Dapper 练习

一、概述:

开发环境:Visual Studio 2017,Windows 10 企业版。

解决方案:MyStudy,下有3个项目,分别是:

  • MyStudy.Data —— 类库(.net framework 4.5+);
  • MyStudy.Admin —— 类库(.net framework 4.5+);
  • MyStudy.Test —— 控制台应用程序(.net framework 4.5+)

这3个项目均要通过 Nuget 引用 Dapper

二、代码

1. 在 MyStudy.Data 新建 DB.cs 类文件,添加 Conn(string ConnStrname)MSSQLConn() 两个方法,代码如下:

using System.Configuration; //该类不仅要 using 代码引用,还要在【项目】—>引用 中添加引用才有效;
using System.Data;
using System.Data.SqlClient;

namespace MyStudy.Data
{
    /// <summary>
    /// 类:静态,数据库访问
    /// </summary>
    public static class DB
    {
        // 常数:整型数默认值为-1
        public const int IntDefault = -1;
        // 常数:字符串默认值为""(空)
        public const string StrDefault = "";

        /// <summary>
        /// 获取 IDbConnection
        /// </summary>
        /// <param name="ConnStrName">Web.Config/App.Config 配置的数据库连接字符串 name 名</param>
        /// <returns></returns>
        public static IDbConnection Conn(string ConnStrName)
        {
            string connString = ConfigurationManager.ConnectionStrings[ConnStrName].ConnectionString;
            IDbConnection _conn = new SqlConnection(connString);
            _conn.Open();
            return _conn;
        }
        /// <summary>
        /// 获取 Web.Config/App.Config 连接字符串 name="MSSQLConn" 的 IDbConnection
        /// </summary>
        /// <returns></returns>
        public static IDbConnection MSSQLConn()
        {
            return Conn("MSSQLConn");
        }
        #endregion 
    }
}

2. 在 MyStudy.Admin 项目中 [引用] MyStudy.Data 项目,并在 MyStudy.Admin 中新增 DataConn.cs 类文件,该文代码为:

using System.Data;

namespace MyStudy.Admin
{
    public class DataConn
    {
        /// <summary>
        /// 读取 web.config/app.config 中 name = MSSQLConn 指定的数据库
        /// </summary>
        public IDbConnection Conn = MyStudy.Data.DB.MSSQLConn();
    }
}

3. 在 MyStudy.Admin 项目中新增 User.cs 类文件,其代码如下:

/* 说明:用户表 实体
 * 对应数据表:
 
CREATE TABLE [dbo].[User]
(
	[UserID] INT NOT NULL IDENTITY(1,1) PRIMARY KEY,
	[UserName] NVARCHAR(20) NULL, --用户名称
	[Account] NVARCHAR(20) NULL,  --登录账号
	[Password] NVARCHAR(20) NULL,  --登录密码
	[Description] NVARCHAR(200) NULL,  --用户描述
	[Remark] NVARCHAR(100) NULL --备注
)  
*/

using System.Linq;
using Dapper;

namespace MyStudy.Admin
{
    // 类:用户
    public class User : DataConn
    {
        // 用户ID
        public int UserID { get; set; }
        // 用户名称
        public string UserName { get; set; }
        // 登录账号
        public string Account { get; set; }
        // 登录密码
        public string Password { get; set; }
        // 用户描述
        public string Description { get; set; }
        // 用户备注
        public string Remark { get; set; }

        /// <summary>
        /// 方法:通过 UserID 获取 User 实体
        /// </summary>
        /// <param name="id">UserID 的 ID 值</param>
        /// <returns></returns>
        public User GetEntity(int id)
        {
            using (Conn)
            {
                string query = "SELECT * FROM [User] WHERE UserID=@id";
                return Conn.Query<User>(query, new { UserID = id }).SingleOrDefault();
            }
        }
        /// <summary>
        /// 方法:通过 登录账号和密码 获取 User 实体
        /// </summary>
        /// <param name="account">账号</param>
        /// <param name="password">密码</param>
        /// <returns></returns>
        public User GetEntity(string account, string password)
        {
            using (Conn)
            {
                string query = "SELECT * FROM [User] WHERE Account=@Account AND Password=@Password";
                return Conn.Query<User>(query, new { Account = account, Password = password }).SingleOrDefault();
            }
        }
        /// <summary>
        /// 方法:通过 User 实体更新 User 表信息
        /// </summary>
        /// <param name="obj">User 实体</param>
        /// <returns></returns>
        public int Update(User obj)
        {
            if (GetEntity(obj.Account, obj.Password).UserID > 1)
            {
                using (Conn)
                {
                    string query = @"UPDATE [User] SET UserName=@Username, Account=@Account,
                                    Password=@Password, Description=@Description, Remark=@Remark 
                                    WHERE UserID=@Userid";
                    return Conn.Execute(query, obj);
                }
            }
            else
            {
                return -1;
            }
        }
        /// <summary>
        /// 方法:通过 User 实体新增 User 表记录
        /// </summary>
        /// <param name="obj">User 实体</param>
        /// <returns></returns>
        public int Insert(User obj)
        {
            if (GetEntity(obj.Account, obj.Password).UserID > 0)
            {
                return -1;
            }
            else
            {
                using (Conn)
                {
                    string query = @"INSERT INTO [User]
                                        VALUES(@Username,@Account,@Password,@Description,@Remark)";
                    return Conn.Execute(query, obj);
                }
            }
        }
        /// <summary>
        /// 方法:根据指定的 User 实体删除 User 表记录
        /// </summary>
        /// <param name="obj">User 实体</param>
        /// <returns></returns>
        public int Delete(User obj)
        {
            using (Conn)
            {
                string query = @"DELETE FROM [User] WHERE UserID = @Userid";
                return Conn.Execute(query, obj);
            }
        }
    }
}

4. 在 MyStudy.Test[引用] MyStudy.DataMyStudy.Admin 两个项目,在 MyStudy.Test 项目中的 App.config 文件中添加 <connectionStrings> 节代码,总体代码如下:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7"/>
    </startup>
  <connectionStrings>
    <add name="MSSQLConn" connectionString="Data Source=服务器名; Database=数据库名; User ID=sa; Password=密码;" providerName="System.Data.SqlClient"/>
  </connectionStrings>
</configuration>

5. 打开 MyStudy.Test 中的 Program.cs 文件,添加代码,如下:

using System;

namespace MyStudy.Test
{
    class Program
    {
        static void Main(string[] args)
        {
            MyStudy.Admin.User myUser = new Admin.User();
            myUser.UserName = "Administrator";
            myUser.Password = "123456";
            myUser.Account = "Admin";
            myUser.Description = "系统最高权限用户";
            int i = myUser.Insert(myUser);
            Console.WriteLine("新增{0}条用户记录",i.ToString());
            Console.ReadKey();
        }
    }
}

6. 根据上述3所述代码首部注释中的 Create Table 语句,创建数据表 User。随后运行控制台应用程序,查看效果。

本文写作随意,文笔粗糙,望读者雅量。

转载于:https://my.oschina.net/primates/blog/1605656

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值