作者:手机用户2602908893 | 来源:互联网 | 2023-05-18 08:34
原文:[UWP小白日记-2]SQLite数据库DOME数据库说简单点就是增删改查,但是对新手来说也是要爆肝的。作为一个新手爆肝无数次啊,血的教训啊现在UWP的教程又少,说多了都是泪。留下来
原文:
[UWP小白日记-2]SQLite数据库DOME
数据库说简单点就是增删改查,但是对新手来说也是要爆肝的。作为一个新手爆肝无数次啊,
血的教训啊现在UWP的教程又少,说多了都是泪。留下来免得以后又爆肝。还有:一定要写注释!一定要写注释!一定要写注释! 重要的事情说三遍!
1.首先,准备工作:
1)引用:
![](https://img1.php1.cn/3cd4a/24e5b/b64/54eb9ced4fc055a0.jpeg)
获取途径:VS里的扩展和更新、NuGet等。
2)数据库模型:
1 internal class ACCOURT
2 {
3 public ACCOURT() { } //空构造函数
4 public ACCOURT(int ID,double Amount,string Descr,DateTime Time,string Mark,string Company)
5 {//重载构造函数,用来后面把UI上的数据传入数据库
6 this.UID = ID;
7 this.Amount = Amount;
8 this.Descr = Descr;
9 this.Time = Time;
10 this.Mark = Mark;
11 this.Company = Company;
12 }
13 ///
14 /// 编号
15 ///
16 [PrimaryKey] //主键
17 [AutoIncrement]//自增
18 [NotNull]//不能为空
19 public int UID { get; set; }
20
21 ///
22 /// 金额
23 ///
24 public double Amount { get; set; }
25
26 ///
27 /// 备注
28 ///
29 public string Descr { get; set; }
30
31 ///
32 /// 时间
33 ///
34 public DateTime Time { get; set; }
35
36 ///
37 /// 标签
38 ///
39 public string Mark { get; set; }
40
41 ///
42 /// 所属公司
43 ///
44 public string Company { get; set; }
45 }
3.写帮助类:
0)引入SQLite.net
1 using SQLite.Net;
2 using SQLite.Net.Platform.WinRT;
3 using SQLite.Net.Interop;
4 using SQLite.Net.Attributes;
5 //管它用不用先放进来
1)数据库路径:
1 ///
2 /// 数据路径
3 ///
4 public string DbName = "SQLite.db";//名字你就随便取了
5 public string DbPath;//可以再这初始化,亦可以在后面在初始化
6 // public string DbPath=Path.Combine(ApplicationData.Current.LocalFolder.Path, DbName);
2)创建数据库连接:
1 #region 创建数据库链接
2 ///
3 /// 创建数据库连接
4 ///
5 ///
6 internal SQLite.Net.SQLiteConnection GetCreateConn()
7 {
8 DbPath = Path.Combine(ApplicationData.Current.LocalFolder.Path, DbName);
9 var con = new SQLite.Net.SQLiteConnection(new SQLitePlatformWinRT(), DbPath);
10
11 return con;
12
13 }
14 #endregion
3)创建数据库:
1 #region 创建数据库
2 ///
3 /// 如果没有数据库,就创建一个数据库。
4 ///
5 internal void CreateDB()
6 {///
7 /// 数据库文件所在路径,这里使用 LocalFolder
8 ///
9 DbPath = Path.Combine(ApplicationData.Current.LocalFolder.Path, DbName);
10 using (var cOnn= GetCreateConn())
11 {
12 //这里什么都不写就是创建一个空数据库
13 conn.CreateTable();//根据ACCOURT模型创建数据表
14
15 }
16 }
17 #endregion
特别说明:增删改这3个方法调用传入的ACCOURT addAccourt 参数,最好改为object类型,这样更具有通用性,应为一个APP不可能只有一个表
哇哈哈,写完才看到ACCOURT本来是写ACCOUNT的写错了,那就将错就错。嘎嘎。
4)插入数据:
1 #region 增
2 internal int AddData(ACCOURT addAccourt)
3 {
4 int result = 0;
5 using (var cOnn= GetCreateConn())
6 {
7 result = conn.Insert(addAccourt);
8 conn.Close();
9 }
10
11 return result;
12 }
13 #endregion
5)删除数据:
1 #region 删
2 internal int DeleteData(ACCOURT AccourtUID)
3 {
4 int result = 0;
5 DbPath = Path.Combine(ApplicationData.Current.LocalFolder.Path, DbName);
6 using (var cOnn= GetCreateConn())
7 {
8 result = conn.Delete(AccourtUID);
9 conn.Close();
10 }
11 return result;
12 }
13
14 #endregion
6)修改数据:
1 #region 改
2 internal int UpadateData(ACCOURT updataAccourt)
3 {
4 int result = 0;
5 DbPath = Path.Combine(ApplicationData.Current.LocalFolder.Path, DbName);
6 using (var cOnn= GetCreateConn())
7 {
8 result = conn.Update(updataAccourt);
9 //conn.Close();
10 }
11 return result;
12 }
7)查询数据:
1 #region 查
2 ///
3 /// 模糊查询
4 ///
5 /// 文本框输入的条件
6 ///
7 internal List CheckData(string conditions)
8 {
9
10 var temSTR = "%"+conditions+"%";
11 #region
12 using (var cOnn= GetCreateConn())
13 {
14
15 return conn.Query("select * from ACCOURT where Company like ? or Descr like ? or UID like ? or Mark like ? or Time like ? or Amount like ?;", temSTR, temSTR, temSTR, temSTR, temSTR, temSTR);
16
17
18
19 }
20 #endregion
21 }
22
23 #endregion
查询只个方法要说明下:这个他的原型:
1 Query(string sql,params objcet [] args)
Sql:这就不用说明了就是SQL语句。
params:不确定个数的参数列表。
1 Query("select * from ACCOURT where Company like ? or Descr like ? or UID like ? or Mark like ? or Time like ? or Amount like ?;", temSTR, temSTR, temSTR, temSTR, temSTR, temSTR)
2 //多字段模糊查询,SQL中有多少个"?"就在后面的params中输入多少个参数
8)读取数据:
1 #region 读
2 internal ObservableCollection ReadData(ObservableCollection accourt)
3 {
4 accourt.Clear();
5 DbPath = Path.Combine(ApplicationData.Current.LocalFolder.Path, DbName);
6 CreateDB();
7 using (var cOnn= GetCreateConn())
8 {
9 var dbAccourt = conn.Table();
10 foreach (var item in dbAccourt)
11 {
12 accourt.Add(item);
13 }
14 //conn.Close();
15 }
16 return accourt;
17 }
18 #endregion
总结
可以看出:增、删、改 这3个方法是差不多的
查询要复杂一点,我想其他任何数据库应该都差不多,我自己目前还没有接触过其他的数据库。
哦,还有一点忘记了,在VS用代码分析的时候会提示:conn.Close(); 多次释放,最好还是删除它。
欢迎大家留言交流
最后是一个dome的代码:
![](https://img1.php1.cn/3cd4a/24e5b/b64/5b42c0e13efdb8af.jpeg)
下载