Win10开发:SQLite 的使用
来源:互联网 发布:淘宝网登录密码加密 编辑:程序博客网 时间:2024/05/21 06:57
SQLite是一款轻型的数据库,网上关于SQLite的介绍太多,我就不专门废话介绍了。
SQLite的作用一言以蔽之,就是如果你做移动应用,需要用的数据库,那就推荐用SQLite。
而关于SQLite的使用,网上也有许多博客和教程,比如http://www.cnblogs.com/h82258652/p/4802076.html和http://www.cnblogs.com/yanxiaodi/p/4941312.html
本篇文章同样讲解Win10下的SQLite的使用,与上面两篇博文有相似的地方也有不同的地方,可以结合的看,当然你要是大神就不用看了
工欲善其事,必先利其器,所以第一步我们要
一、安装SQLite扩展包
安装方式有两种
方法a:
打开VS->菜单->工具->扩张和更新->联机搜索“SQLite”->找到“SQLite for Universal App Platform”扩展包下载并安装,安装成功后重启VS
方法b:
打开SQLite的官方下载页面:http://sqlite.org/download.html 找到下图中的下载并安装
二、添加SQLite引用
右键工程项目下的引用,选择“添加引用”。然后在扩展中勾选“SQLite for Universal App Platform”,点击确定
三、添加 SQLite.Net 的引用
右键工程名,选择“管理Nuget程序包”,搜索“SQLite.Net”,找到SQLite.Net-PCL后选择安装。因为SQLite的版本非常多,而且有点乱,小心不要找错了。
你也可以选择SQLite.Net.Async-PCL安装包,从名字就可以看出这是异步的版本,如果熟悉或擅长异步编程的读者也可以选择安装这个版本。
四、找一个合适的工具用来查看SQLite数据库
我知道的有两个,SQLite Expert和SQLiteStudio,我用的是前者。
SQLite Expert的下载主页:http://sqliteexpert.com/download.html,选择免费的Personal版本下载安装即可
public class Student { [PrimaryKey,AutoIncrement] public int Id { get; set; } [MaxLength(5)] public string Name { get; set; } }
稍微对数据库有点接触的可以看出,Id是主键、自增长字段;Name的最大长度是5
private readonly static string DbPath = Path.Combine(ApplicationData.Current.LocalFolder.Path, "test.db");调试查看这个变量的值为:%USERPROFILE%\AppData\Local\Packages\5bdfd734-2172-41fe-941d-794b82811336_pq9gj32favbr2\LocalState\test.db
public static SQLiteConnection GetDbConnection() { // 连接数据库,如果数据库文件不存在则创建一个空数据库 return new SQLiteConnection(new SQLitePlatformWinRT(), DbPath); }
public static void CreatStudentTable() { var conn = GetDbConnection(); // 创建 模型对应的表,如果已存在,则忽略该操作 conn.CreateTable<Student>(); }当前我还没找到一个合适的方法,让这个方法可以创建不同的表格,因为这里的“Student”是写死的,想用反射的办法,但是功夫没学到家,所以还没有办法解决。如果有读者知道方法还请告知~~
这样做带来一个很不友好的操作,如果需要创建Person表,就要另写一函数
public static void CreatPersonTable() { var conn = GetDbConnection(); // 创建 模型对应的表,如果已存在,则忽略该操作 conn.CreateTable<Person>(); }
4、插入数据
a. 插入一个数据
public static int Insert<T>(T obj) { int count; using (var conn = GetDbConnection()) { count=conn.Insert(obj); } return count; }b. 插入一个List列表
public static int Insert<T>(List<T> objList) { int count=0; using (var conn = GetDbConnection()) { foreach (var item in objList) { count+=conn.Insert(item); } } return count; }都是很简单的代码,Insert方法会自动判断你的输入参数类型将数据插入对应的表格,当然首先数据库中要有相对应的表格存在。这里未做异常捕获
方法二的测试代码:
var list=Enumerable.Range(0, 10).Select(i=> new Student() { Name = i.ToString() }).ToList();DbHelper.Insert(list);
5、删除数据
a.删除单个数据
public static void Delete<T>(T obj) { using (var conn = GetDbConnection()) { conn.Delete(obj); } }
b.删除全部数据
public static void DeleteAll(Type type) { using (var conn = GetDbConnection()) { conn.DeleteAll(type); } }测试代码:
DbHelper.DeleteAll(typeof(Student));
c.根据Sql语句删除
public static void Delete<T>(string query) where T : class { using (var conn = GetDbConnection()) { var list=conn.Query<T>(query); foreach (var item in list) { conn.Delete(item); } } }测试代码:
<pre name="code" class="csharp">DbHelper.Delete<Student>("select * from student where id < 24");
这里用到了查询方法,因此
6、查询数据
public static List<T> Find<T>(string query) where T : class { using (var conn = GetDbConnection()) { return conn.Query<T>(query); } }
测试代码:
DbHelper.Find<Student>("select * from student where id < 24");还有一种做法是直接用Linq
var conn=DbHelper.GetDbConnection();var list=conn.Table<Student>().Where(x=>x.Id<30);
7、更新数据
public static int Update<T>(T obj) { using (var conn = GetDbConnection()) { return conn.Update(obj); }}
七、查看数据库
打开安装好的SQLite Expert,菜单中File->Open Database,然后根据步骤六开头讲的路径找到test.db文件。左边就是数据库名和表名,主界面主要的关心的是SQL、Data和Design,它们的作用分别是
SQL标签下可以输入sql语句进行数据库的操作
Data标签下就是具体的表格数据
Design标签就是数据库的定义,对应项目工程中的实体类,这里就是Student类
- Win10开发:SQLite 的使用
- Win10 UWP 开发系列:使用SQLite
- Win10 UWP 开发系列:支持异步的SQLite
- android开发--sqlite的使用
- iOS开发----SQLite的使用
- Win10开发:OneDrive SDK 的使用
- sqlite在win10 和ubuntu 中使用
- Lazarus开发使用SQLite的WinCE项目
- Lazarus开发使用SQLite的WinCE项目
- iPhone开发之SQLite的使用
- iPhone开发之SQLite的使用
- iPhone开发之SQLite的使用
- Windows Mobile开发之SQLite的使用
- ios开发之sqlite的使用
- Android开发之Sqlite的使用
- Android开发之Sqlite的使用(二)
- Android 开发中 SQLite 数据库的使用
- 安卓开发中SQLite的使用
- Codeforces Round #336 (Div. 2) 总结
- ios json格式解析为为NSDictionary
- 字节对齐
- PHP系列 - Autoload 自動載入
- python
- Win10开发:SQLite 的使用
- 发布构建到maven中央仓库
- 文章标题
- 贪吃蛇---练手项目1
- 解密ThreadLocal
- MFC ClistCtrl.GethotItem()返回值始终 -1
- OPENCV之Kmeans图像分割
- RecycleView上拉加载更多的一种解决方案
- Redis整合Spring结合使用缓存实例