Sqlite3内存数据库
Sqlite3内存数据库
- Sqlite3内存数据库
- 环境及依赖
- 功能演示-内存模式
- 功能演示-文件模式
- 功能演示-文件加载到内存
- 功能演示-内存保存到文件
- 执行结果-第N次执行
- 执行结果-第N+1次执行
Sqlite3内存数据库
Sqlite3是一个小型的,嵌入式的数据库。它还具有一个特色的功能:即内存数据库模式(与Redis ,Memcached等不同)。 这篇文章使用 .Net 5.0 平台演示实现Sqlite3的内存数据库模式。
环境及依赖
我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:
- 开发环境**.Net 5.0**
- VS2019
- Nuget 包: Microsoft.Data.Sqlite
功能演示-内存模式
using Microsoft.Data.Sqlite;
public class MsSqliteTest
{string MemoryConnStr = "Data Source=InMemorySample;Mode=Memory;Cache=Shared";string FileConnStr = "Data Source=MsSqliteTest.db;Cache=Shared";SqliteConnection Conn;public bool CheckTableExists(SqliteConnection Conn, string tableName){var comm = Conn.CreateCommand();comm.CommandText = $"Select Count(name) FROM sqlite_master WHERE type='table' AND name='{tableName}';";int rt = System.Convert.ToInt32(comm.ExecuteScalar());return rt > 0;}public bool OpenCreateTable(SqliteConnection Conn){Conn.Open();if (CheckTableExists(Conn, "Users") == false){var comm = Conn.CreateCommand();comm.CommandText = "Create Table Users (Id Integer PRIMARY KEY AUTOINCREMENT, Name CHAR (2, 20) NOT NULL, Age INTEGER);";int rt = System.Convert.ToInt32(comm.ExecuteNonQuery());comm.Dispose();return rt > 0;}return true;}public int InsertTable(SqliteConnection Conn){var comm = Conn.CreateCommand();comm.CommandText = "insert into Users (Name,Age) Values ('xiaoming1',25)";int rt = System.Convert.ToInt32(comm.ExecuteNonQuery());comm.Dispose();return rt;}public int SelectTableCount(SqliteConnection Conn){var comm = Conn.CreateCommand();comm.CommandText = "select Count(ID) From Users";int rt = System.Convert.ToInt32(comm.ExecuteScalar());comm.Dispose();return rt;}public void MemTest(){Conn = new SqliteConnection(MemoryConnStr);OpenCreateTable(Conn);Console.WriteLine("Mem:Insert=" + System.Convert.ToString(InsertTable(Conn)));Console.WriteLine("Mem:Select=" + System.Convert.ToString(SelectTableCount(Conn)));Conn.Close();Conn.Dispose();}}
功能演示-文件模式
public void FileTest(){Conn = new SqliteConnection(FileConnStr);OpenCreateTable(Conn);Console.WriteLine("File:Insert=" + System.Convert.ToString(InsertTable(Conn)));Console.WriteLine("File:Select=" + System.Convert.ToString(SelectTableCount(Conn)));Conn.Close();Conn.Dispose();}
功能演示-文件加载到内存
public void LoadFileToMem(){Conn = new SqliteConnection(FileConnStr);Conn.Open();var MemConn = new SqliteConnection(MemoryConnStr);MemConn.Open();Conn.BackupDatabase(MemConn);Console.WriteLine(SelectTableCount(Conn));Console.WriteLine(SelectTableCount(MemConn));Conn.Close();Conn.Dispose();MemConn.Close();MemConn.Dispose();}
功能演示-内存保存到文件
/// <summary>/// 子查询第6到10条:共5条/// </summary>public void SQLiteSubSelectTest(SqliteConnection Conn, int startLine, int endLine){// SQL Server// select top 10 * from users where id not in(select top 30 id from users order by id asc) order by id ascvar comm = Conn.CreateCommand();var Count = endLine - startLine + 1;var NotInCount = startLine - 1;// Select ID from users where id not in(select ID from users order by id asc Limit 0,5) order by id asc Limit 0,5comm.CommandText = $"Select ID from Users Where ID not in(select ID from Users Limit 0,{NotInCount}) Limit 0,{Count}";var reader = comm.ExecuteReader();var readedLine = 0;while (reader.Read()){Console.WriteLine($"ID={reader.GetInt32(0)}");readedLine++;}Console.WriteLine($"SQLiteSubSelect Read Line={readedLine}");reader.Close();reader.DisposeAsync();comm.Dispose();}public void SaveMemToFileTest(){Conn = new SqliteConnection(FileConnStr);Conn.Open();var MemConn = new SqliteConnection(MemoryConnStr);MemConn.Open();Conn.BackupDatabase(MemConn); //Load File To MemConsole.WriteLine(SelectTableCount(Conn));Console.WriteLine(SelectTableCount(MemConn));Console.WriteLine(InsertTable(MemConn));Console.WriteLine(InsertTable(MemConn));Console.WriteLine(SelectTableCount(MemConn));MemConn.BackupDatabase(Conn); //Save Mem To FileSQLiteSubSelectTest(MemConn, 6, 10);MemConn.Close();MemConn.Dispose();Conn.Close();Conn.Dispose();}public void AllTest(){MemTest();FileTest();LoadFileToMem();SaveMemToFileTest();}public void Main(string[] argv){MsSqliteTest ms = new MsSqliteTest();// ms.MemTest()// ms.FileTest()// ms.LoadFileToMem()// ms.SaveMemToFileTest()ms.AllTest();}
执行结果-第N次执行
Mem:Insert=1
Mem:Select=1
File:Insert=1
File:Select=4
4
4
4
4
1
1
6
ID=6
SQLiteSubSelect Read Line=1
执行结果-第N+1次执行
Mem:Insert=1
Mem:Select=1
File:Insert=1
File:Select=7
7
7
7
7
1
1
9
ID=6
ID=7
ID=8
ID=9
SQLiteSubSelect Read Line=4
Sqlite3内存数据库相关推荐
- python自带sqlite_python内置的sqlite3模块,使用其内置数据库
#!/usr/bin/env python3#创建SQLite3内存数据库,并创建带有四个属性的sales表#sqlite3模块,提供了一个轻量级的基于磁盘的数据库,不需要独立的服务器进程 impor ...
- python自带sqlite_Python使用sqlite3模块内置数据库
1.python内置的sqlite3模块,创建数据库中的表,并向表中插入数据,从表中取出所有行,以及输出行的数量. #!/usr/bin/env python3 #创建SQLite3内存数据库,并创建 ...
- Android 培训课程V1.0
各位同学,以下课程有想了解的,请联系我,本人录制了一下相关课程视频. 大概课程 Android APP架构设计...1 Android 领域驱动设计...1 Android 基于插件式设计...2 A ...
- 简书python数据分析基础reading_Python数据分析基础ReadingDay5_sqlite3
reading Foundations for Analysis with Python Day 5 <Python数据分析基础>封面 这篇笔记开始记录数据库的内容,会用两篇笔记分别讲述P ...
- python内置库有哪些_python 内置库
广告关闭 回望2020,你在技术之路上,有什么收获和成长么?对于未来,你有什么期待么?云+社区年度征文,各种定制好礼等你! version: 0. 2.0, configurations: }, de ...
- Python内存数据库/引擎
1 初探 在平时的开发工作中,我们可能会有这样的需求:我们希望有一个内存数据库或者数据引擎,用比较Pythonic的方式进行数据库的操作(比如说插入和查询). 举个具体的例子,分别向数据库db中插入两 ...
- sqlite3的backup和restore函数的使用
参考代码 第一段 这个亲测可以使用 #include <sqlite3.h> #include <iostream> /* ** Perform an online backu ...
- sqlite3的基本操作
转自:http://blog.chinaunix.net/uid-26833883-id-3239313.html 一.数据库基本概念 A.数据(Data) 能够输入计算机并能被计算机程序识别和处理的 ...
- SQLite学习笔记(三)--创建内存数据库
主要代码 sqlite3 *m_db; int nRet=sqlite3_open(":memory:", &m_db);创建内存数据库 if (nRet==0) { .. ...
最新文章
- Android 2018最新验证手机号正则表达式
- mysql如何复制表结构,包括主键,索引等等
- 设计模式(一)---简单工厂模式
- Linux以及各大发行版介绍
- 计算机二级考试答题无法启动ppt,计算机二级考试中操作题常见问题之[演示文稿]...
- SMTP、POP3、IMAP的区别
- Oracle小复习(1)
- verilog实现多周期处理器之——(三)数据相关问题及其解决
- JAVA RMI远程方法调用简单实例
- python mooc-课程资源 | Python语言系列专题MOOC
- 机器人总动员中的小草_机器人总动员观后感(精选4篇)
- 645.错误的集合(力扣leetcode) 博主可答疑该问题
- JavaScript高级程序设计:基本概念思维导图
- HTML网页设计期末课程大作业~旅游住宿酒店的HTML网页设计(14页) ~学生网页设计作业源码 旅游网页代码 学生网页设计与制作期末作业下载 DW旅游网页作业代码下载...
- java平均数函数_java求平均数的函数
- 数据仓库——概念数据模型
- Alexa 世界网站排名研究(下)(转)
- ubuntu中rar与unrar用法详解
- Ubuntu如何安装Python
- 考研复试——数据结构
热门文章
- 【C++】VAL树的旋转(左单旋、右单旋、双旋)
- Spring源码分析系列——bean创建过程分析(三)——工厂方法创建bean
- IPHONE开发 VIEW之间的相互切换
- 再安利几个看片追剧的App
- 11月,匆匆而过,留下了遗憾(亚洲赛广州站)
- 用python创建微信机器人_手把手教你用Python创建微信机器人
- 大学软件工程总结,总结到位
- mail,at,batch,sleep小练习
- 计算机毕业设计Java房产中介管理系统(源码+系统+mysql数据库+lW文档)
- 单词拆分(动态规划)