C# 三层架构的一个小练习

本文文字方面引用 微冷的風丶(博客地址:https://www.cnblogs.com/smbk/)
代码部分是本人亲自写的一个sqlite的练手(当时写的太烂了,现在回顾重构一下)

三层架构分为:表现层(UI(User Interface))、业务逻辑层(BLL(Business Logic Layer))、数据访问层(DAL(Data Access Layer))再加上实体类库(Model)

1、实体类库(Model),主要存放数据库中的表字段。

操作:

(1)先建立实体类库Model,打开项目,在解决方案中右键——>添加——>新建项目——>选中类库——>改名Model——>确定

(2)选中Model类库——>建立实体类命名为:UserInfo

2、数据访问层(DAL),主要是存放对数据类的访问,即对数据库的添加、删除、修改、更新等基本操作

操作:

(1)先建立数据访问层类库DAL,打开项目,在解决方案中右键——>添加——>新建项目——>选中类库——>改名DAL——>确定

(2)在DAL中添加对Model的引用,点击DAL前▲——>右键点击引用——>添加引用——>项目——>选中Model——>确定

(3)在DAL中添加对system.configuration的引用,点击DAL前▲——>右键点击引用——>添加引用——>程序集——>选中System.configuration——>确定

(4)建立数据访问类,右键DAL——>建立类——>建立实体类命名为:UserDB、

UserDB类包括这些方法:

/// 创建数据库
void CreatDB()
{
    string path = @"D:\login\login.sqlite";
    SQLiteConnection cnn = new SQLiteConnection("data source=" + path);
    //相当于cn = new SQLiteConnection("Data Source=MyDatabase.sqlite;Version=3;");前提是先建立MyDatabase.sqlite
    //相当于cn = new SQLiteConnection(@"Data Source=E:\test\123.sqlite");
    cnn.Open();
    cnn.Close();
}
/// 删除数据库(其实删除这个文件)
void DeleteDB()
{
    string path = @"D:\login\login.sqlite";
    if (System.IO.File.Exists(path))
    {
        System.IO.File.Delete(path);
    }
}
/// 添加表
public void CreateTable()
{
    using (SQLiteConnection cnn = new SQLiteConnection(@"Data Source=E:\login\login.sqlite"))//创建链接,链接到该数据库
    {
        if (cnn.State != System.Data.ConnectionState.Open)                              //判断数据库是否是打开,打开状态则不进行操作并关闭。
        {
            cnn.Open();                                                                 //打开数据库
            SQLiteCommand cmd = new SQLiteCommand(cnn);                                 //创建对该数据库操作的命令
            cmd.CommandText = "CREATE TABLE UserList(Account varchar(20),Password varchar(20))";               //输入命令内容
            cmd.ExecuteNonQuery();                                                      //执行并且返回
        }
        cnn.Close();
    }
}
/// 填充表_注册新账号
    public int FillTable(string tbNewAccount, string tbNewPassword, string tbNewPasswordConfirm)
{
    using (SQLiteConnection cnn = new SQLiteConnection(@"Data Source=E:\login\login.sqlite"))  //创建链接,链接到该数据库
    {
        if (cnn.State != System.Data.ConnectionState.Open)                                  //判断数据库是否是打开,打开状态则不进行操作并关闭。
        {
            cnn.Open();                                                                     //打开数据库
            using (SQLiteCommand cmd = new SQLiteCommand(cnn))                                    //创建对该数据库操作的命令
            {
                cmd.CommandText = "INSERT INTO UserList(Account, Password) VALUES('" + tbNewAccount + "', '" + tbNewPassword + "')";     //输入命令内容
                if (tbNewPasswordConfirm == tbNewPassword)//微软牛逼!
                {
                    cmd.ExecuteNonQuery();
                    return 1;
                }
                else
                    return 0;
            }
        }
        cnn.Close();
        return -1;
    }
}
 /// 改表名
public void ChangeNmae()
{
    using (SQLiteConnection cnn = new SQLiteConnection(@"Data Source=E:\login\login.sqlite"))
    {
        if (cnn.State != System.Data.ConnectionState.Open)
        {
            cnn.Open();
            using (SQLiteCommand cmd = new SQLiteCommand(cnn))
            {
                cmd.CommandText = "ALTER TABLE UserList RENAME TO Scores";
                cmd.ExecuteNonQuery();
            }
        }
        cnn.Close();
    }
}
/// 删除表
void DropTable()
{
    using (SQLiteConnection cnn = new SQLiteConnection(@"Data Source=E:\login\login.sqlite"))
    {
        if (cnn.State != System.Data.ConnectionState.Open)
        {
            cnn.Open();
            using (SQLiteCommand cmd = new SQLiteCommand(cnn))
            {
                cmd.CommandText = "DROP TABLE IF EXISTS UserList";
                //DROP TABLE  IF EXISTS database_name.table_name( IF EXISTS database_name.可省略)
                cmd.ExecuteNonQuery();
            }
        }
        cnn.Close();
    }
}
/// 修改表_忘记密码
void UpdataTable()
{
    using (SQLiteConnection cnn = new SQLiteConnection(@"Data Source=E:\login\login.sqlite"))
    {
        if (cnn.State != System.Data.ConnectionState.Open)
        {
            cnn.Open();
            using (SQLiteCommand cmd = new SQLiteCommand(cnn))
            {
                cmd.CommandText = "UPDATE UserList SET Password = tbNewPassword WHERE Account = tbAccountNoPassword";
                cmd.ExecuteNonQuery();
            }
        }
        cnn.Close();
    }
}
/// 表内查找_验证账号密码
public int SelectTable(string tbAccount, string tbPassword)
{
    using (SQLiteConnection cnn = new SQLiteConnection(@"Data Source=E:\login\login.sqlite"))
    {
        if (cnn.State != System.Data.ConnectionState.Open)
        {
            cnn.Open();
            using (SQLiteCommand cmd = new SQLiteCommand(cnn))
            {
                cmd.CommandText = "SELECT * FROM UserList WHERE Account='" + tbAccount + "' AND Password='" + tbPassword + "'";
                var flag = cmd.ExecuteScalar();
                if (flag == null)
                {
                    return 0;//表示未搜索到
                }
                else
                {
                    return 1;//表示搜索到
                }
            }
        }
        cnn.Close();
        return -1;//-1表示没有启动搜索
    }
}
///执行
class Progarm
{
        //static void Main(string[] args)
        //{
        //DataBaseTest p = new DataBaseTest();
        //p.CreateDB();                                                                           //创建库
        //p.DeleteDB();                                                                           //删除数据库
        //p.CreateTable();                                                                        //创建表
        //p.ChangeNmae();                                                                         //改表名
        //p.FillTable();                                                                          //填充表——增
        //p.DropTable();                                                                          //删除表——删
        //p.UpdataTable();                                                                        //修改表——改
        //p.SelectTable();                                                                        //表内查找—查
        //}
}

C# 三层架构的一个小练习

上一篇:用 Scoop 管理你的 Windows 软件


下一篇:windows 桌面背景设置实例