本文文字方面引用 微冷的風丶(博客地址: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(); //表内查找—查
//}
}