Sqlite 常用操作及使用EF连接Sqlite
Sqlite是一个很轻,很好用的数据库。兼容性很强,由于是一款本地文件数据库,不需要安装任何数据库服务,只需引入第三方开发包就可以。Sqlite的处理速度比MySql和PostgreSQL更快,性能很不错。毕竟本地数据库读写操作是直接从本地读取,不需要网络层传输。
.net 下的使用:
第一步引入SQlite开发包,这里需要注意选择System.Data.Sqlite包,如果是.net core 程序的话就选择core版本。

Sqlite支持EF,需要使用EF操作的话就引入下图所示的开发包,我用的是.net core 所以引入的是CORE版本,

引入成功后就可以操作了,跟传统数据库一样,第一步是连接数据库,由于Sqlite是本地数据库,所以连接地址就是数据库文件的存放路径
//数据库连接地址
public string path_DB = Directory.GetParent(System.Environment.CurrentDirectory).FullName + "/FinanceDataFrameWorkCore/net5.0/financeData.sqlite";
//连接数据库,连接成功后打开通道
public SQLiteConnection m_dbConnection;
public void connectToDatabase(string DBPath, string Version = "3")
{
Console.WriteLine(DBPath); m_dbConnection = new SQLiteConnection("Data Source=" + DBPath + ";Version=" + Version + ";");
m_dbConnection.Open();
}
//然后就可以 进行数据库操作了,SQlite支持ADO操作,所以跟使用ADO.net 操作数据库一样,设置SQLiteCommand ,然后执行。
public int ExecuteNonQuery(string LiteSQL)
{
SQLiteCommand sQLiteCommand = new SQLiteCommand(LiteSQL, m_dbConnection);
return sQLiteCommand.ExecuteNonQuery();
}
//查询数据表格
public DataTable GetSelectTable(string LiteSQL)
{
SQLiteCommand cmd = new SQLiteCommand(LiteSQL, m_dbConnection);
SQLiteDataAdapter sQLiteDataAdapter = new SQLiteDataAdapter(cmd);
DataSet dataSet = new DataSet();
sQLiteDataAdapter.Fill(dataSet);
return dataSet.Tables[0];
}
//一个简单的SqliteHelper
public class SqliteHelper
{
public SQLiteConnection m_dbConnection; public string path_sqlite = Directory.GetParent(System.Environment.CurrentDirectory).FullName + "/FinanceDataFrameWorkCore/net5.0/financeData.sqlite"; public SqliteHelper()
{
connectToDatabase(path_sqlite);
} public void createNewDatabase(string DataBaseName = "demo.sqlite")
{
SQLiteConnection.CreateFile(DataBaseName);
} public void connectToDatabase(string DBPath, string Version = "3")
{
Console.WriteLine(DBPath); m_dbConnection = new SQLiteConnection("Data Source=" + DBPath + ";Version=" + Version + ";");
m_dbConnection.Open();
} public void CloseConnection()
{
m_dbConnection.Close();
} public int ExecuteNonQuery(string LiteSQL)
{
SQLiteCommand sQLiteCommand = new SQLiteCommand(LiteSQL, m_dbConnection);
return sQLiteCommand.ExecuteNonQuery();
} public DataTable GetSelectTable(string LiteSQL)
{
SQLiteCommand cmd = new SQLiteCommand(LiteSQL, m_dbConnection);
SQLiteDataAdapter sQLiteDataAdapter = new SQLiteDataAdapter(cmd);
DataSet dataSet = new DataSet();
sQLiteDataAdapter.Fill(dataSet);
return dataSet.Tables[0];
} public SQLiteDataReader GetSelectTableReader(string LiteSQL)
{
SQLiteCommand sQLiteCommand = new SQLiteCommand(LiteSQL, m_dbConnection);
return sQLiteCommand.ExecuteReader();
}
}
}
如果要使用ef操作SQlite的话也可以,sqlite的ef操作跟其他数据库一样。指定好数据库实体表名称,实体字段名保持和数据库一致,然后配置好数据库上下文。

数据库关联上下文配置
public class FinanceDataContext : DbContext
{
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
//注入Sqlite链接字符串 string path_DB = Environment.CurrentDirectory + "/financeData.sqlite"; optionsBuilder.UseSqlite($"Data Source={path_DB}");
}
public DbSet<FinanceData> FinanceData { set; get; } }
配置好实体后就可以进行操作啦,我这里没有配置实体自动生成表,需要在数据库建好数据表跟实体里保持一致就可以了。然后就可用ef +Linq进行数据库读写操作了
Sqlite 常用操作及使用EF连接Sqlite的更多相关文章
- sqlite 常用操作
#查看当前数据库信息 .database #列出所有表 .tables #列出所有字段 .schema 或者 .schema table_name #清空一张表 delete from tabl ...
- 让EF飞一会儿:如何用Entity Framework 6 连接Sqlite数据库
获取Sqlite 1.可以用NuGet程序包来获取,它也会自动下载EF6 2.在Sqlite官网上下载对应的版本:http://system.data.sqlite.org/index.html/do ...
- Unity3D连接sqlite数据库操作C#版
unity3d有自己对应的sqlite.dll分别需要三个文件 1.Mono.Data.Sqlite.dll 在unity安装文件“Unity\Editor\Data\MonoBleedingEdge ...
- C++连接sqlite数据库的增删查改操作
这个代码是接着上次说的,要用VS2013操作数据库,首先要配置好环境,创建好数据库表等. 不明白的翻我前面2篇看看~~~ 关于前面的用到的goto 语句,这个我也是参考其他博主写的,现在我注释掉了,毕 ...
- 应用EF访问SQLite数据
创建项目,应用EF访问SQLite 1.创建项目 项目结构初始结构如下图所示,Netage.Data.SQLite 类库项目用于定义访问数据的接口和方法,Netage.SQLiteTest.UI 控制 ...
- Android内部自带的SQLite数据库操作dos命令
1:什么叫做SQLite数据库 Android系统内核是Linux系统,Android系统很特殊,他自带了一个SQLite数据库,轻量型的一款嵌入式的数据库 它占用资源非常的低,在嵌入式设备中,可能只 ...
- C#连接SQLite数据库方法
--结合Enterprise Library连接,操作SQLite 企业库是我们常用的框架之一,可以从http://entlib.codeplex.com/下载Enterprise Library 5 ...
- C#连接SQLite的字符串
一.C#在不同情况下连接SQLite字符串格式 1.Basic(基本的) Data Source=filename;Version=3; 2.Using UTF16(使用UTF16编码) Data S ...
- SQLite之C#连接SQLite
SQLite是一个开源.免费的小型的Embeddable RDBMS(关系型数据库),用C实现,内存占用较小,支持绝大数的SQL92标准,现在已变得越来越流行,它的体积很小,被广泛应用于各种不同类型的 ...
随机推荐
- [第二章]c++学习笔记5(类型转换构造函数)
使用例 析构函数 使用例 析构函数和数组 delete运算符导致析构函数的调用
- linux python2.6.6升级到python2.7
升级 python 2.6.6 系统到 2.7.10 版本 CentOS 6 系统默认 Python 版本是:2.6.6 平时在使用中遇到很多的库要求是 2.7.x 版本的库,比如使用 ConfigP ...
- negix安装与配置2-反向代理一台
negix反向代理: 1.实现效果:打开浏览器,输入www.123.com 跳转到linux系统主页面中 2.准备工作tomcat java环境 https://www.cnblogs.com/q13 ...
- ElasticJob分布式任务调度应用v2.5.2
为何要使用分布式任务调度 **本人博客网站 **IT小神 www.itxiaoshen.com 演示项目源码地址** https://gitee.com/yongzhebuju/spring-task ...
- 当 dotnet-monitor 遇上 Prometheus, 是种什么样的体验?
对于开发和运维人员来说, 监控大屏很棒, 让我们来做一个 Dashboard 吧! 大家可能听说过一些 CLI 诊断工具, 比如 dotnet-counters,dotnet-dump 和 dotne ...
- Codeforces 288E - Polo the Penguin and Lucky Numbers(数位 dp+推式子)
题目传送门 似乎我的解法和官方题解不太一样 纪念自己独立做出来的一道难度 2800 的题. 我们记 \(ans(x)\) 为 \([444...44,x]\) 的答案,显然答案为 \(ans(r)-a ...
- Codeforces 870F - Path(数论+分类讨论+正难则反)
Codeforces 题目传送门 & 洛谷题目传送门 首先考虑 \(d(u,v)\) 是个什么东西,分情况讨论: \(u\not\perp v\),\(d(u,v)=1\) \(u\perp ...
- 【豆科基因组】利马豆/洋扁豆Lima bean(Phaseolus lunatus L.)基因组2021NC
目录 一.来源 二.结果 扁豆的染色体水平高质量组装 扁豆相关农艺性状的QTL定位 直系/旁系同源的演化和物种形成事件 与农艺性状相关基因的直系同源物 群体结构分析揭示扁豆遗传簇 豆荚发育过程中的基因 ...
- 关于AnnotationHub的一些应用
AnnotationHub是一个包含大量注释信息的数据库,里面有很多物种,以及来源于很多数据库的注释信息. 1,安装这个包 source("https://bioconductor.org/ ...
- 关于vim复制剪贴粘贴命令的总结-转
最近在使用vim,感觉很好很强大,但是在使用复制剪切粘贴命令是,碰到了一些小困惑,网上找了一些资料感觉很不全,讲的也不好,遂自己进行实践并总结了. 首先是剪切(删除): 剪切其实也就顺带删除了所选择的 ...