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的更多相关文章

  1. sqlite 常用操作

    #查看当前数据库信息 .database #列出所有表 .tables #列出所有字段 .schema   或者  .schema table_name #清空一张表 delete from tabl ...

  2. 让EF飞一会儿:如何用Entity Framework 6 连接Sqlite数据库

    获取Sqlite 1.可以用NuGet程序包来获取,它也会自动下载EF6 2.在Sqlite官网上下载对应的版本:http://system.data.sqlite.org/index.html/do ...

  3. Unity3D连接sqlite数据库操作C#版

    unity3d有自己对应的sqlite.dll分别需要三个文件 1.Mono.Data.Sqlite.dll 在unity安装文件“Unity\Editor\Data\MonoBleedingEdge ...

  4. C++连接sqlite数据库的增删查改操作

    这个代码是接着上次说的,要用VS2013操作数据库,首先要配置好环境,创建好数据库表等. 不明白的翻我前面2篇看看~~~ 关于前面的用到的goto 语句,这个我也是参考其他博主写的,现在我注释掉了,毕 ...

  5. 应用EF访问SQLite数据

    创建项目,应用EF访问SQLite 1.创建项目 项目结构初始结构如下图所示,Netage.Data.SQLite 类库项目用于定义访问数据的接口和方法,Netage.SQLiteTest.UI 控制 ...

  6. Android内部自带的SQLite数据库操作dos命令

    1:什么叫做SQLite数据库 Android系统内核是Linux系统,Android系统很特殊,他自带了一个SQLite数据库,轻量型的一款嵌入式的数据库 它占用资源非常的低,在嵌入式设备中,可能只 ...

  7. C#连接SQLite数据库方法

    --结合Enterprise Library连接,操作SQLite 企业库是我们常用的框架之一,可以从http://entlib.codeplex.com/下载Enterprise Library 5 ...

  8. C#连接SQLite的字符串

    一.C#在不同情况下连接SQLite字符串格式 1.Basic(基本的) Data Source=filename;Version=3; 2.Using UTF16(使用UTF16编码) Data S ...

  9. SQLite之C#连接SQLite

    SQLite是一个开源.免费的小型的Embeddable RDBMS(关系型数据库),用C实现,内存占用较小,支持绝大数的SQL92标准,现在已变得越来越流行,它的体积很小,被广泛应用于各种不同类型的 ...

随机推荐

  1. 微信小程序(三)开发框架

    基本构成: 数据绑定: 例: <!--index.hxml--> <view> <text data-name="{{theName}}">&l ...

  2. 题解 P6345 [CCO 2017]接雨滴

    解题思路 NOIP在即,感觉即将退役,或许是最后一篇题解了... 求水的体积不是特别好求,我们考虑求出 水+柱子 的体积最后再减去柱子的体积. 发现对于最高的柱子在中间的情况其实可以把最高柱子一侧的柱 ...

  3. [cf1349E]Slime and Hats

    首先,当发现全场不存在黑色帽子时,显然所有人都知道其是白色帽子,即必然离开 当第一轮时,若第$n$个人发现前面$n-1$个人全是白色时,其自己必然是黑色,必然离开 而第二轮时,若第$n-1$个人发现$ ...

  4. [luogu5361]热闹的聚会与尴尬的聚会

    由于两者是独立的,我们希望两者的$p$和$q$都最大 考虑最大的$p$,先全部邀请,此时要增大$p$显然必须要删去当前度数最小的点,不断删除之后将每一次度数最小值对答案取max即可 对于$q$也即最大 ...

  5. [atARC063F]Snuke's Coloring 2

    首先,可以通过将所有$x_{i}=0$都选择第1类,其余选第2类,构造出一个以$(0,0)$和$(1,h)$为左下角和右上角的矩形,答案即为$2h+2$,类似地还可以构造出$2w+2$ 若最终的矩形不 ...

  6. 性能压测-压力测试-Apache JMeter安装使用

    http://jmeter.apache.org/download_jmeter.cgi 下载win10得zip文件 在有java环境后进入项目得bin->jmeter.bat 启动 自带国际化 ...

  7. idea插件 Background Image Plus 随机更换背景图片

    首先在市场搜索: Background Image Plus 设置图片: 在view中,有set 图片,有random图片,有clean图片的 设置就是用set,随便设置个路径. 重点来了,随机更换背 ...

  8. Codeforces 251D - Two Sets(异或方程组)

    题面传送门 题意: 你有一个可重集 \(S=\{a_1,a_2,\dots,a_n\}\),你要把它划分成两个可重集 \(S_1,S_2\) 使得 \(S\) 中每个元素都恰好属于 \(S_1\) 与 ...

  9. NFLSOJ 1060 - 【2021 六校联合训练 NOI #40】白玉楼今天的饭(子集 ln)

    由于 NFLSOJ 题面上啥也没有就把题意贴这儿了( 没事儿,反正是上赛季的题,你们非六校学生看了就看了,况且看了你们也没地方交就是了 题意: 给你一张 \(n\) 个点 \(m\) 条边的图 \(G ...

  10. windows下typora图片自动上传到图床(附带腾讯云教程)

    目录 1. 背景 2. 在Typora中使用 3. 安装 3.1 安装教程环境说明 3.2 安装步骤 3.3 配置图床 3.3.1 插件配置 3.3.2 腾讯云参数获取 3.3.2.1 新建子用户,获 ...