一、概述:
开发环境: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.Data 和 MyStudy.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。随后运行控制台应用程序,查看效果。
本文写作随意,文笔粗糙,望读者雅量。