博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[UWP小白日记-2]SQLite数据库DOME
阅读量:6863 次
发布时间:2019-06-26

本文共 5822 字,大约阅读时间需要 19 分钟。

原文:

  数据库说简单点就是增删改查,但是对新手来说也是要爆肝的。作为一个新手爆肝无数次啊,

血的教训啊现在UWP的教程又少,说多了都是泪。留下来免得以后又爆肝。还有:一定要写注释!一定要写注释!一定要写注释! 重要的事情说三遍!

  1.首先,准备工作:

  1)引用:

      

    获取途径: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 #endregion21 }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的代码:

 

转载地址:http://kaqyl.baihongyu.com/

你可能感兴趣的文章
BZOJ 3998 [TJOI2015]弦论
查看>>
【C语言】19-static和extern关键字1-对函数的作用
查看>>
MapReduce Input Split(输入分/切片)详解
查看>>
Java Arrays.asList注意事项
查看>>
LeetCode 359 Logger Rate Limiter
查看>>
Windows核心编程04-字符编码
查看>>
mysqlcluster笔记
查看>>
ArcCore重构-Makefile模块化
查看>>
例10-3 uva10375(唯一分解定理)
查看>>
Python 魔术方法指南
查看>>
HTML概述
查看>>
BZOJ 4245: [ONTAK2015]OR-XOR
查看>>
github 错误
查看>>
idea 项目转 eclipse项目
查看>>
js去除空格,判断是否包含
查看>>
css3 背景色 实现边框渐变运动动画
查看>>
c#实现常用排序算法
查看>>
rails中输出excel
查看>>
leetcode504
查看>>
消息中间件系列三:使用RabbitMq原生Java客户端进行消息通信(消费者(接收方)自动确认模式、消费者(接收方)自行确认模式、生产者(发送方)确认模式)...
查看>>