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标准,现在已变得越来越流行,它的体积很小,被广泛应用于各种不同类型的 ...
随机推荐
- Effective C++ 总结笔记(二)
二.构造/析构/赋值运算 05.了解C++默默编写并调用那些函数 如果自己不声明, 编译器就会暗自为class创建一个default构造函数.一个copy构造函数.一个copy assignment操 ...
- XenServer删除ISO存储!
1.用命令 df -hal 可以看到 ISO库是使用了10G的硬盘的 2.下面开始直接右键删除ISO,但看到资源还是占用着10G的 3.如果想把这10G的硬盘资源空出来的话,只要复制前面查找到挂载的路 ...
- [atAGC050F]NAND Tree
当$n$为偶数,暴力$o(n)$枚举第一次操作,以下只考虑$n$为奇数的情况 此时,$n-1$即操作次数为偶数,找到最小的$i$(其中$1\le i\le \frac{n-1}{2}$),满足第$2i ...
- SpringMVC---Json的使用
1.所需文件 2.pom中加入json <?xml version="1.0" encoding="UTF-8"?> <web-app xml ...
- 力扣 - 剑指 Offer 10- I. 斐波那契数列
题目 剑指 Offer 10- I. 斐波那契数列 思路1(递归 / 自顶向下) 这题是很常见的一道入门递归题,可以采用自顶向下的递归方法,比如我们要求第n个位置的值,根据斐波那契数列的定义fib(n ...
- myeclipse激活、破解教程
myeclipse安装注意事项 首先要下载jdk 配置jdk的环境变量 如果1和2 都打不开说明没有下载jdk文件,点击下载就可以了,点击1的时候会出现要求下载的界面,直接下载就可以了...下载完成之 ...
- Codeforces 639E - Bear and Paradox(二分+贪心)
Codeforces 题目传送门 & 洛谷题目传送门 原来 jxd 作业里也有我会做的题 i 了 i 了 首先这种题目的套路就是先考虑对于一个固定的 \(c\),怎样求出得分最高的策略,而类似 ...
- DTOJ 3999: 游戏
题目描述这个游戏是这样的,你有一个初始序列S ,你每次可以选择一段任意长度的连续区间,把他们+1 再膜k,给定目标序列,你需要尝试用尽量少的操作次数将初始序列变为目标序列.作为一名优秀的OIer,您认 ...
- doxygen文件配置
主要配置修改 整个程序配置分几个部分 Project related configuration options 项目相关,包括: 项目名 输出目录 输出语言 是否显示继承属性 是否对C.Java.F ...
- 【豆科基因组】绿豆Mungbean, Vigna radiata基因组2014NC
目录 来源 一.简介 二.结果 基因组组装 重复序列和转座子 基因组特征和基因注释 绿豆的驯化 豆科基因组复制历史 基于转录组分析的豇豆属形成 绿豆育种基因组资源 三.讨论 四.方法 材料 组装 SN ...