Sqlite3内存数据库

  • Sqlite3内存数据库
    • 环境及依赖
    • 功能演示-内存模式
    • 功能演示-文件模式
    • 功能演示-文件加载到内存
    • 功能演示-内存保存到文件
    • 执行结果-第N次执行
    • 执行结果-第N+1次执行

Sqlite3内存数据库

Sqlite3是一个小型的,嵌入式的数据库。它还具有一个特色的功能:即内存数据库模式(与Redis ,Memcached等不同)。 这篇文章使用 .Net 5.0 平台演示实现Sqlite3的内存数据库模式。

环境及依赖

我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:

  1. 开发环境**.Net 5.0**
  2. VS2019
  3. 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内存数据库相关推荐

  1. python自带sqlite_python内置的sqlite3模块,使用其内置数据库

    #!/usr/bin/env python3#创建SQLite3内存数据库,并创建带有四个属性的sales表#sqlite3模块,提供了一个轻量级的基于磁盘的数据库,不需要独立的服务器进程 impor ...

  2. python自带sqlite_Python使用sqlite3模块内置数据库

    1.python内置的sqlite3模块,创建数据库中的表,并向表中插入数据,从表中取出所有行,以及输出行的数量. #!/usr/bin/env python3 #创建SQLite3内存数据库,并创建 ...

  3. Android 培训课程V1.0

    各位同学,以下课程有想了解的,请联系我,本人录制了一下相关课程视频. 大概课程 Android APP架构设计...1 Android 领域驱动设计...1 Android 基于插件式设计...2 A ...

  4. 简书python数据分析基础reading_Python数据分析基础ReadingDay5_sqlite3

    reading Foundations for Analysis with Python Day 5 <Python数据分析基础>封面 这篇笔记开始记录数据库的内容,会用两篇笔记分别讲述P ...

  5. python内置库有哪些_python 内置库

    广告关闭 回望2020,你在技术之路上,有什么收获和成长么?对于未来,你有什么期待么?云+社区年度征文,各种定制好礼等你! version: 0. 2.0, configurations: }, de ...

  6. Python内存数据库/引擎

    1 初探 在平时的开发工作中,我们可能会有这样的需求:我们希望有一个内存数据库或者数据引擎,用比较Pythonic的方式进行数据库的操作(比如说插入和查询). 举个具体的例子,分别向数据库db中插入两 ...

  7. sqlite3的backup和restore函数的使用

    参考代码 第一段 这个亲测可以使用 #include <sqlite3.h> #include <iostream> /* ** Perform an online backu ...

  8. sqlite3的基本操作

    转自:http://blog.chinaunix.net/uid-26833883-id-3239313.html 一.数据库基本概念 A.数据(Data) 能够输入计算机并能被计算机程序识别和处理的 ...

  9. SQLite学习笔记(三)--创建内存数据库

    主要代码 sqlite3 *m_db; int nRet=sqlite3_open(":memory:", &m_db);创建内存数据库 if (nRet==0) { .. ...

最新文章

  1. Android 2018最新验证手机号正则表达式
  2. mysql如何复制表结构,包括主键,索引等等
  3. 设计模式(一)---简单工厂模式
  4. Linux以及各大发行版介绍
  5. 计算机二级考试答题无法启动ppt,计算机二级考试中操作题常见问题之[演示文稿]...
  6. SMTP、POP3、IMAP的区别
  7. Oracle小复习(1)
  8. verilog实现多周期处理器之——(三)数据相关问题及其解决
  9. JAVA RMI远程方法调用简单实例
  10. python mooc-课程资源 | Python语言系列专题MOOC
  11. 机器人总动员中的小草_机器人总动员观后感(精选4篇)
  12. 645.错误的集合(力扣leetcode) 博主可答疑该问题
  13. JavaScript高级程序设计:基本概念思维导图
  14. HTML网页设计期末课程大作业~旅游住宿酒店的HTML网页设计(14页) ~学生网页设计作业源码 旅游网页代码 学生网页设计与制作期末作业下载 DW旅游网页作业代码下载...
  15. java平均数函数_java求平均数的函数
  16. 数据仓库——概念数据模型
  17. Alexa 世界网站排名研究(下)(转)
  18. ubuntu中rar与unrar用法详解
  19. Ubuntu如何安装Python
  20. 考研复试——数据结构

热门文章

  1. 【C++】VAL树的旋转(左单旋、右单旋、双旋)
  2. Spring源码分析系列——bean创建过程分析(三)——工厂方法创建bean
  3. IPHONE开发 VIEW之间的相互切换
  4. 再安利几个看片追剧的App
  5. 11月,匆匆而过,留下了遗憾(亚洲赛广州站)
  6. 用python创建微信机器人_手把手教你用Python创建微信机器人
  7. 大学软件工程总结,总结到位
  8. mail,at,batch,sleep小练习
  9. 计算机毕业设计Java房产中介管理系统(源码+系统+mysql数据库+lW文档)
  10. 单词拆分(动态规划)