SQLite在C#中的安装与操作
SQLite 介绍
SQLite,是一款轻型的数据库,用于本地的数据储存。
先说说优点,它占用资源非常的低,在嵌入式设备中需要几百K的内存就够了;作为轻量级数据库,他的处理速度也足够快;支持的的容量级别为T级;独立: 没有额外依赖;开源;支持多种语言;
我的用途
在项目开发中,需要做一次数据数据同步。因为数据库实时数据的同步,需要记录更新时间,系统日志等等数据;当然,你也可以选择写ini和xml等等配置文件来解决,但是都如数据库可读性高不是。
安装
1. 引用 .NET 驱动 http://system.data.sqlite.org/index.html/doc/trunk/www/index.wiki
这三个文件,在项目中,引用之后就可以进行创建数据库查询数据操作。
2.使用vs提供的包管理工具Nuget进行项目引用。
Nuget包管理工具
搜索SQLite安装对应的包,下载完成后就自动在项目中引用了。
使用
创建数据库
//创建一个数据库
SQLiteConnection.CreateFile("Database.sqlite");
操作数据库
//创建连接字符串
SQLiteConnection conn = new SQLiteConnection("Data Source=Database.sqlite;Version=3;");
//这是数据库登录密码
conn.SetPassword("");
//打开数据库
conn.Open();
string query = "create table table1 (id INTEGER, name VARCHAR)";
//创建命令
SQLiteCommand cmd = new SQLiteCommand(query, conn);
//执行命令
cmd.ExecuteNonQuery();
//释放资源
conn.Close();
插入数据
SQLiteConnection conn = new SQLiteConnection("Data Source=Database.sqlite;Version=3;");
conn.Open();
string query = "insert into table1 (id,name) values(1,'小明')";
SQLiteCommand cmd = new SQLiteCommand(query, conn);
cmd.ExecuteNonQuery();
conn.Close();
cmd.Dispose();
查询数据
using (SQLiteConnection conn = new SQLiteConnection("Data Source=Database.sqlite;Version=3;"))
{
conn.Open();
string query = "select * from table1";
SQLiteCommand cmd = new SQLiteCommand(query, conn);
SQLiteDataAdapter da = new SQLiteDataAdapter(cmd);
DataTable dt = new DataTable();
da.Fill(dt);
}
可视化工具
SQLiteStudio 可视化工具 https://sqlitestudio.pl
连接数据库
查表
设置主键,已经自增。
主键自增类型必须是 INTEGER类型
其他
1.SQLite .NET驱动设置数据库读取密码
.net驱动之中,提供了单独设置密码和登录密码
using (SQLiteConnection conn = new SQLiteConnection("Data Source=Database.sqlite;Version=3;"))
{
conn.Open();
//设置数据库密码
conn.ChangePassword("");
conn.Clone();
}
登录带密码的数据库
using (SQLiteConnection conn = new SQLiteConnection("Data Source=Database.sqlite;Version=3;"))
{
conn.SetPassword("");
conn.Open();
string query = "select * from table1";
SQLiteCommand cmd = new SQLiteCommand(query, conn);
SQLiteDataAdapter da = new SQLiteDataAdapter(cmd);
DataTable dt = new DataTable();
da.Fill(dt);
conn.Clone();
}
密码正确查询成功
密码错误查询异常
还有就是密码设置错误,打开数据库后数据库状态依旧是打开状态,但是查询后出现异常无法查询。
使用 dotnet驱动设置密码之后,使用其他框架驱动貌似就无法打开了。
FQA
1.大量数据频繁Insert特别慢怎么办?
解决办法是使用事务来Insert数据.
SQLite给出的解释是:正常执行Insert,每一次执行都占用一次IO,而使用事务执行,直到Insert结束只占用一次IO;
执行事务Insert代码
private bool QueryTran(List<string> queryList)
{
SQLiteConnection conn = new SQLiteConnection("Data Source=DataBase;Version=3;");
SQLiteCommand cmd = conn.CreateCommand();
conn.Open();
SQLiteTransaction tran = conn.BeginTransaction();
bool check = false;
try
{
foreach (string item in queryList)
{
cmd.CommandText = item;
cmd.ExecuteNonQuery();
}
tran.Commit();
check = true;
}
catch (Exception ex)
{
tran.Rollback();
check = false;
throw ex;
}
finally
{
conn.Close();
}
return check;
}
SQLite在C#中的安装与操作的更多相关文章
- sqlite在火狐中安装及使用
1.SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中.它是D.RichardHipp建立的公有领域项目.它的设计目标是嵌入式的,而且目前已经在很多嵌入 ...
- python操作三大主流数据库(1)python操作mysql①windows环境中安装python操作mysql数据库的MySQLdb模块mysql-client
windows安装python操作mysql数据库的MySQLdb模块mysql-client 正常情况下应该是cmd下直接运行 pip install mysql-client 命令即可,试了很多台 ...
- Pyqt 获取windows系统中已安装软件列表
开始之前的基础知识 1. 获取软件列表 在Python的标准库中,_winreg可以操作Windows的注册表.获取已经安装的软件列表一般是读去windows的注册表: SOFTWARE\Micros ...
- 传递给数据库 'master' 中的日志扫描操作的日志扫描号无效
错误:连接数据库的时候提示:SQL Server 检测到基于一致性的逻辑 I/O 错误 校验和不正确 C:\Documents and Settings\Administrator>" ...
- 用 EasyBCD 在 Win7/8 中硬盘安装 Ubuntu
写在前面: 1. 我装的是ubuntu 13.10 64位,不一样的地方是,从casper文件夹复制出来的文件不是vmlinuz,而是vmlinuz.efi,相应的,menu.lst里也要将vmlin ...
- [转载]在C#中使用官方驱动操作MongoDB
在C#中使用官方驱动操作MongoDB 8.1)下载安装 想要在C#中使用MongoDB,首先得要有个MongoDB支持的C#版的驱动.C#版的驱动有很多种,如官方提供的,samus. 实现思路大都类 ...
- VMware虚拟机中如何安装VMWare-Tools详解
VMware虚拟机中如何安装VMWare-Tools详解 好处:可以支持图形界面,可以支持共享文件功能等 VMware虚拟机中如何配置显 VMware作为一款虚拟机利器,很多人都利用它来实现Linux ...
- C#中对Excel进行操作
工作中要处理一批数据,主要是处理从别处导出来的Excel表格(大概有一千多行,三十多列),拿到表格对Excel表格进行分析,按照一定的规则进行拆分成为一万多行的数据:首先这个需求要用程序进行处理的背景 ...
- clearcase 中一些概念和操作
clearcase 中一些概念和操作 视图 常用命令 ClearCase 安装和使用的一些FAQ 参考 ClearCase具体的说是做配置管理的工具,只是SCM管理工具其中的一种.是RATIONAL公 ...
随机推荐
- ASP.NET Core MVC 过滤器介绍
过滤器的作用是在 Action 方法执行前或执行后做一些加工处理.使用过滤器可以避免Action方法的重复代码,例如,您可以使用异常过滤器合并异常处理的代码. 过滤器如何工作? 过滤器在 MVC Ac ...
- Java试题
1.不使用循环,等比数列输出整型 n.2n.4n.8n--当大于max时,反向输出8n.4n.2n.n. 例如 n=10,max=100. 输出: 10 20 40 80 80 40 20 10 解题 ...
- 使用apidoc根据JS文件生成接口文档
1.安装nodejs.下载网址:http://www.nodejs.org: 2.安装apidoc.运行cmd,切换到nodejs的安装目录,在命令行输入: 1 npm install apidoc ...
- Java之面向对象例子(二)
定义一个Book类,在定义一个JavaBook类继承他 //book类 package com.hanqi.maya.model; public class Book { public String ...
- .NET Core 事件总线,分布式事务解决方案:CAP
背景 相信前面几篇关于微服务的文章也介绍了那么多了,在构建微服务的过程中确实需要这么一个东西,即便不是在构建微服务,那么在构建分布式应用的过程中也会遇到分布式事务的问题,那么 CAP 就是在这样的背景 ...
- 制作Docker镜像
编写DockerFile 这个DockerFile是一个制作镜像的配方,用于描述这些文件,环境,和命令.在Linux.macOS的窗口终端中,或者windows的命令提示符下,执行下面的步骤,切记如果 ...
- CDH版本的oozie安装执行bin/oozie-setup.sh prepare-war,没生成oozie.war?
不多说,直接上干货! 前期博客 Oozie安装部署 问题描述 bin/oozie-setup.sh prepare-war 解决办法 [hadoop@bigdatamaster bin]$ pwd / ...
- poj_3468: A Simple Problem with Integers (树状数组区间更新)
题目是对一个数组,支持两种操作 操作C:对下标从a到b的每个元素,值增加c: 操作Q:对求下标从a到b的元素值之和. 这道题也可以用线段树解,本文不做描述,下面分析如何用树状数组来解决这道题. 先把问 ...
- 使用travis-ci自动部署github上的项目
travis-ci是什么? 一个使用yaml格式配置用于持续集成完成自动化测试部署的开源项目 官网:https://travis-ci.org/ 使用travis-ci集成vue.js项目 首先,您需 ...
- (转)使用BigDecimal进行精确运算
场景:在进行支付业务的金额计算时,通常采用BigDecimal类型的数据,并没有看到常见的int double类型,所以有必要好好学习下BigDecimal的常用用法. 1 误区 首先我们先来看如下代 ...