[UWP小白日记-2]SQLite数据库DOME

简介: 原文:[UWP小白日记-2]SQLite数据库DOME  数据库说简单点就是增删改查,但是对新手来说也是要爆肝的。作为一个新手爆肝无数次啊, 血的教训啊现在UWP的教程又少,说多了都是泪。留下来免得以后又爆肝。
原文: [UWP小白日记-2]SQLite数据库DOME

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

血的教训啊现在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         /// <summary>
14         /// 编号
15         /// </summary>
16         [PrimaryKey] //主键
17         [AutoIncrement]//自增
18         [NotNull]//不能为空
19         public int UID { get; set; }
20 
21         /// <summary>
22         /// 金额
23         /// </summary>
24         public double Amount { get; set; }
25 
26         /// <summary>
27         /// 备注
28         /// </summary>
29         public string Descr { get; set; }
30 
31         /// <summary>
32         /// 时间
33         /// </summary>
34         public DateTime Time { get; set; }
35 
36         /// <summary>
37         /// 标签
38         /// </summary>
39         public string Mark { get; set; }
40         
41         /// <summary>
42         /// 所属公司
43         /// </summary>
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  /// <summary>
2  /// 数据路径
3 /// </summary>
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         /// <summary>
 3         /// 创建数据库连接
 4         /// </summary>
 5         /// <returns></returns>
 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         /// <summary>
 3         /// 如果没有数据库,就创建一个数据库。
 4         /// </summary>
 5         internal void CreateDB()
 6         {/// <summary>
 7          /// 数据库文件所在路径,这里使用 LocalFolder
 8          /// </summary>
 9             DbPath = Path.Combine(ApplicationData.Current.LocalFolder.Path, DbName);
10             using (var conn = GetCreateConn())
11             {
12                 //这里什么都不写就是创建一个空数据库
13                 conn.CreateTable<ACCOURT>();//根据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         /// <summary>
 3         /// 模糊查询
 4         /// </summary>
 5         /// <param name="conditions">文本框输入的条件</param>
 6         /// <returns></returns>
 7         internal List<ACCOURT> CheckData(string conditions)
 8         {
 9            
10             var temSTR = "%"+conditions+"%";
11             #region 
12             using (var conn = GetCreateConn())
13             {
14                
15                 return conn.Query<ACCOURT>("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<ACCOURT>(string sql,params objcet [] args)

Sql:这就不用说明了就是SQL语句。

params:不确定个数的参数列表。

  

1 Query<ACCOURT>("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<ACCOURT> ReadData(ObservableCollection<ACCOURT> 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<ACCOURT>();
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的代码:

下载

 

目录
相关文章
|
7天前
|
存储 API 数据库
QML使用Sqlite数据库存储ListModel数据
本文介绍了在QML中使用Sqlite数据库存储ListModel数据的方法,包括如何创建数据库、读取数据、动态添加和删除数据,以及如何在程序启动和退出时与数据库同步数据。
|
7天前
|
数据库 数据库管理
qt对sqlite数据库多线程的操作
本文总结了在Qt中进行SQLite数据库多线程操作时应注意的四个关键问题,包括数据库驱动加载、加锁、数据库的打开与关闭,以及QsqlQuery变量的使用。
|
2月前
|
人工智能 小程序 Java
【工具】轻松解锁SQLite数据库,一窥微信聊天记录小秘密
本文介绍了一款名为PyWxDump的开源工具,它可以获取微信账户信息、解密SQLite数据库以查看和备份聊天记录。此工具适用于已登录电脑版微信的用户,通过GitHub下载后简单几步即可操作。适合对数据恢复感兴趣的开发者,但请注意合法合规使用并尊重隐私。
206 2
【工具】轻松解锁SQLite数据库,一窥微信聊天记录小秘密
|
8天前
|
SQL 数据库 数据库管理
SQLite 创建数据库
SQLite 的 sqlite3 命令被用来创建新的 SQLite 数据库。您不需要任何特殊的权限即可创建一个数据。
13 0
|
10天前
|
JSON NoSQL 数据库
和SQLite数据库对应的NoSQL数据库:TinyDB的详细使用(python3经典编程案例)
该文章详细介绍了TinyDB这一轻量级NoSQL数据库的使用方法,包括如何在Python3环境中安装、创建数据库、插入数据、查询、更新以及删除记录等操作,并提供了多个编程案例。
24 0
|
2月前
|
SQL 存储 小程序
【教程】navicat配合HTTP通道远程连接SQLite数据库
本文介绍了如何通过 Navicat Premium 工具配合 n_tunnel_sqlite.php 和 HTTP 通道远程连接服务器上的 SQLite 数据库。SQLite 是一种自给自足的、无服务器的 SQL 数据库引擎,由于其端口未对外开放,直接使用 Navicat 进行远程连接不可行。文章详细记录了使用 HTTP 通道实现远程连接的过程,包括定位本地 `ntunnel_sqlite.php` 文件,将其上传至服务器,并通过 Navicat 配置 HTTP 通道连接 SQLite 数据库的具体步骤。
53 0
【教程】navicat配合HTTP通道远程连接SQLite数据库
|
2月前
|
SQL 关系型数据库 数据库
C语言与数据库:使用C语言操作SQLite等数据库。
C语言与数据库:使用C语言操作SQLite等数据库。
21 0
|
5月前
|
存储 数据库连接 数据库
Android数据存储:解释SQLite数据库在Android中的使用。
Android数据存储:解释SQLite数据库在Android中的使用。
67 0
|
4月前
|
数据库 Android开发 数据安全/隐私保护
在 Android Studio 中结合使用 SQLite 数据库实现简单的注册和登录功能
在 Android Studio 中结合使用 SQLite 数据库实现简单的注册和登录功能
178 2
|
4月前
|
SQL 存储 数据库
48. 【Android教程】数据库:SQLite 的使用
48. 【Android教程】数据库:SQLite 的使用
51 1
下一篇
无影云桌面