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

北城以北 提交于 2019-11-28 18:08:38

本文文字方面引用 微冷的風丶(博客地址: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

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.SQLite;

/// <summary>
/// 数据访问层(DAL),主要是存放对数据类的访问,即对数据库的添加、删除、修改、更新等基本操作
/// </summary>
namespace DAL
{/// <summary>
/// 数据访问类
/// </summary>
    class 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();
        }

        /// <summary>
        /// 删除数据库(其实删除这个文件)
        /// </summary>
        void DeleteDB()
        {
            string path = @"D:\login\login.sqlite";
            if (System.IO.File.Exists(path))
            {
                System.IO.File.Delete(path);
            }
        }


        /// <summary>
        /// 添加表
        /// </summary>
        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();
            }
        }

        /// <summary>
        /// 填充表_注册新账号
        /// </summary>
        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;
            }
        }

        /// <summary>
        /// 改表名
        /// </summary>
        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();
            }
        }

        /// <summary>
        /// 删除表
        /// </summary>
        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();
            }
        }

        /// <summary>
        /// 修改表_忘记密码
        /// </summary>
        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();
            }
        }

        /// <summary>
        /// 表内查找_验证账号密码
        /// </summary>
        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表示没有启动搜索
            }
        }
        //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();                                                                        //表内查找—查
        //}
    }
}
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!