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#中的安装与操作的更多相关文章

  1. sqlite在火狐中安装及使用

    1.SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中.它是D.RichardHipp建立的公有领域项目.它的设计目标是嵌入式的,而且目前已经在很多嵌入 ...

  2. python操作三大主流数据库(1)python操作mysql①windows环境中安装python操作mysql数据库的MySQLdb模块mysql-client

    windows安装python操作mysql数据库的MySQLdb模块mysql-client 正常情况下应该是cmd下直接运行 pip install mysql-client 命令即可,试了很多台 ...

  3. Pyqt 获取windows系统中已安装软件列表

    开始之前的基础知识 1. 获取软件列表 在Python的标准库中,_winreg可以操作Windows的注册表.获取已经安装的软件列表一般是读去windows的注册表: SOFTWARE\Micros ...

  4. 传递给数据库 'master' 中的日志扫描操作的日志扫描号无效

    错误:连接数据库的时候提示:SQL Server 检测到基于一致性的逻辑 I/O 错误 校验和不正确 C:\Documents and Settings\Administrator>" ...

  5. 用 EasyBCD 在 Win7/8 中硬盘安装 Ubuntu

    写在前面: 1. 我装的是ubuntu 13.10 64位,不一样的地方是,从casper文件夹复制出来的文件不是vmlinuz,而是vmlinuz.efi,相应的,menu.lst里也要将vmlin ...

  6. [转载]在C#中使用官方驱动操作MongoDB

    在C#中使用官方驱动操作MongoDB 8.1)下载安装 想要在C#中使用MongoDB,首先得要有个MongoDB支持的C#版的驱动.C#版的驱动有很多种,如官方提供的,samus. 实现思路大都类 ...

  7. VMware虚拟机中如何安装VMWare-Tools详解

    VMware虚拟机中如何安装VMWare-Tools详解 好处:可以支持图形界面,可以支持共享文件功能等 VMware虚拟机中如何配置显 VMware作为一款虚拟机利器,很多人都利用它来实现Linux ...

  8. C#中对Excel进行操作

    工作中要处理一批数据,主要是处理从别处导出来的Excel表格(大概有一千多行,三十多列),拿到表格对Excel表格进行分析,按照一定的规则进行拆分成为一万多行的数据:首先这个需求要用程序进行处理的背景 ...

  9. clearcase 中一些概念和操作

    clearcase 中一些概念和操作 视图 常用命令 ClearCase 安装和使用的一些FAQ 参考 ClearCase具体的说是做配置管理的工具,只是SCM管理工具其中的一种.是RATIONAL公 ...

随机推荐

  1. CJOJ 1976 二叉苹果树 / URAL 1018 Binary Apple Tree(树型动态规划)

    CJOJ 1976 二叉苹果树 / URAL 1018 Binary Apple Tree(树型动态规划) Description 有一棵苹果树,如果树枝有分叉,一定是分2叉(就是说没有只有1个儿子的 ...

  2. 阿里云VPC绑定EIP实现SNAT

    阿里云VPC需要了解的几个问题 什么是VPC 虚拟私有网络(Virtual Private Network),能够帮助用户基于阿里云构建出一个隔离的网络环境.用户可以完全掌控自己的虚拟网络,包括选择自 ...

  3. STM32使用cube生成的程序后在keil5编译后首次SWD可以下载再次下载不行的解决办法。

    使用cube配置导出工程在keil5编译后首次SWD下载可以再次下载不行的解决办法. 1原因: cube使用的是HAL库,初始化语句里面禁用了调试功能. 在stm32f1xx_hal_msp.c中 _ ...

  4. Android源码博文集锦4

    Android精选源码 一款常见的自定义加载动画 android开源记账项目CoCoin Android自定义view:拖拽选择按钮 Android指纹识别 一个折线图,它提供了几个非常实用的功能 一 ...

  5. Linux服务器中安装Oracle

    笔者手动安装成功 一,oracle安装前的准备与配置 1,修改stsctl.conf文件 Linux是为小文件设计的,Oracle数据库安装需要占用较多资源,要把各项参数调大. 使用vi编辑/etc/ ...

  6. CentOS Linux 新建oracle数据库实例并连接

    CentOS Linux 新建oracle数据库实例 安装好oracle之后,首先想到的那就是自己建一个库来看看效果喽. 创建的过程如下文章所说,http://blog.chinaunix.net/u ...

  7. RabbitMQ入门与使用篇

    介绍 RabbitMQ是一个由erlang开发的基于AMQP(Advanced Message Queue)协议的开源实现.用于在分布式系统中存储转发消息,在易用性.扩展性.高可用性等方面都非常的优秀 ...

  8. python实战===实现读取txt每一行的操作,账号密码

    最近搞到了一批163邮箱的账号和密码,但是里面有部分账号不能用,密码是错的. 以此为背景 人工手动挨个登录检查效率太低! 于是写了下面这个脚本: import linecache import smt ...

  9. Maven注意事项

    Maven好处: 1.依赖管理:对jar包统一管理 2.项目构建:项目编码完成后,对项目进行编译.测试.打包.部署,实现项目一键发布1.配置环境变量    注意:maven工具必须有jdk环境.并且: ...

  10. Mahout安装部署

    0x01 简介 Mahout 是一套具有可扩充能力的机器学习类库.它提供机器学习框架的同时,还实现了一些可扩展的机器学习领域经典算法的实现,可以帮助开发人员更加方便快捷地创建智能应用程序.通过和 Ap ...