精华内容
下载资源
问答
  • 2022-04-28 09:42:43

    一、内存数据库:
    在SQLite中,数据库通常是存储在磁盘文件中的。然而在有些情况下,我们可以让数据库始终驻留在内存中。最常用的一种方式是在调用sqlite3_open()的时候,数据库文件名参数传递”:memory:”,如:
    代码如下:
    rc = sqlite3_open(“:memory:”, &db);

    在调用完以上函数后,不会有任何磁盘文件被生成,取而代之的是,一个新的数据库在纯内存中被成功创建了。由于没有持久化,该数据库在当前数据库连接被关闭后就会立刻消失。需要注意的是,尽管多个数据库连接都可以通过上面的方法创建内存数据库,然而它们却是不同的数据库。

    更多相关内容
  • NULL 博文链接:https://raojl.iteye.com/blog/556364
  • 在SpringBoot中集成内存数据库Sqlite. 为什么 像H2、hsqldb、derby、sqlite这样的内存数据库,小巧可爱,做小型服务端演示程序,非常好用。最大特点就是不需要你另外安装一个数据库。 操作步骤 修改pom.xml文件 &...

    目标

    在SpringBoot中集成内存数据库Sqlite.

    为什么

    像H2、hsqldb、derby、sqlite这样的内存数据库,小巧可爱,做小型服务端演示程序,非常好用。最大特点就是不需要你另外安装一个数据库。

    操作步骤

    1. 修改pom.xml文件
    <dependency>
       <groupId>org.xerial</groupId>
       <artifactId>sqlite-jdbc</artifactId>
       <version>3.36.0.3</version>
    </dependency>
    
    1. 修改项目配置文件application.yml
    spring:
      datasource:
        username: hsp
        password: 123456
        url: jdbc:derby:blogDb;create=true
        driver-class-name: org.apache.derby.jdbc.EmbeddedDriver
        schema: classpath:schema.sql
        data: classpath:data.sql
        initialization-mode: always
        continue-on-error: true
    
    1. 添加初始化数据文件
    • 建表脚本:schema.sql
    CREATE TABLE `blog` (
      `id` int AUTO_INCREMENT NOT NULL,
      `title` varchar(255) DEFAULT NULL,
      PRIMARY KEY (`id`)
    );
    
    • 导入数据脚本:data.sql
    insert into blog(id,title) values(1,'花生皮编程博客');
    
    1. 启动类:HspApplication
    @MapperScan({"cn.hsp.blog"})
    @SpringBootApplication
    public class HspApplication {
    
    	public static void main(String[] args) {
    		SpringApplication.run(HspApplication.class, args);
    	}
    
    }
    
    1. Controller类:BlogController
    @RestController
    @RequestMapping("/blog")
    public class BlogController {
    
        @Autowired
        private BlogMapper blogMapper;
    
        @GetMapping(value="/query")
        public List<Blog> query()
        {
            return blogMapper.query();
        }
    }
    
    1. Mapper类:BlogMapper
    @Repository
    public interface BlogMapper {
        @Select(value = "select * from blog")
        List<Blog> query();
    }
    
    1. 数据bean:Blog
    @Data
    public class Blog {
        private int id;
        private String title;
    }
    

    工程截图

    运行

    运行HspApplication即可

    效果

    完整源代码

    https://gitee.com/hspbc/springboot_memdb.git

    关于我

    厦门大学计算机专业|华为八年高级工程师
    十年软件开发经验,5年编程培训教学经验
    目前从事编程教学,软件开发指导,软件类毕业设计指导。
    所有编程资料及开源项目见https://cxyxy.blog.csdn.net/article/details/120405881

    集成内存数据库系列

    SpringBoot集成内存数据库H2
    SpringBoot集成内存数据库Derby
    SpringBoot集成内存数据库hsqldb
    SpringBoot集成内存数据库Sqlite

    展开全文
  • 一、内存数据库:  在SQLite中,数据库通常是存储在磁盘文件中的。然而在有些情况下,我们可以让数据库始终驻留在内存中。最常用的一种方式是在调用sqlite3_open()的时候,数据库文件名参数传递”:memory:”,如: ...
  • 一、内存数据库:  在SQLite中,数据库通常是存储在磁盘文件中的。然而在有些情况下,我们可以让数据库始终驻留在内存中。最常用的一种方式是在调用sqlite3_open()的时候,数据库文件名参数传递”:memory:”,如: ...
  • Sqlite3内存数据库

    2020-12-23 18:18:39
    Sqlite3内存数据库Sqlite3内存数据库环境及依赖功能演示-内存模式功能演示-文件模式## 功能演示-文件加载到内存功能演示-内存保存到文件执行结果-第N次执行执行结果-第N+1次执行 Sqlite3内存数据库 Sqlite3是一个...

    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 asc
    		var 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,5
    		comm.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 Mem
    		
    		Console.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 File
    		
    		SQLiteSubSelectTest(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数ju 库模块1年多了,稳定的雅痞。 感谢酷宝贝提供的帮助和例程:原贴 -> 点我传送 今天特意来分享一下我自己写的内存数ju库操作例程 同时附带自己封装的增删查改函数,不一定对大家都有用 大家可以看此...
  • 嵌入式数据库SQLite与Java嵌入式数据库SQLite与JavaSQLite作为一个开源的嵌入式数据库产品,具有系统开销小,检索效率高的特性,适用于手机、PDA、机顶盒设备等电器,并且作为嵌入式数据库在可下载的消费类应用程序...

    嵌入式数据库SQLite与Java

    嵌入式数据库SQLite与Java

    SQLite作为一个开源的嵌入式数据库产品,具有系统开销小,检索效率高的特性,适用于手机、PDA、机顶盒设备等电器,并且作为嵌入式数据库在可下载的消费类应用程序中运行的很好。这篇文章介绍嵌入式数据库产品SQLite的技术特点,并着重讨论研究与Java语言之间的接口,并以实例说明如何使用JAVA开发基于SQLite的应用程序。

    通常我们采用各种数据库产品来实现对数据的存储、检索等功能,例如,Oracle,SQL Server,MySQL等等。这些产品除提供基本的查询,删除,添加等功能外,也提供了很多高级特性,如触发器,存储过程,数据备份恢复,全文检索功能等。但实际上,很多的应用,仅仅利用到了这些数据库产品的基本特性而已。而且在一些小型应用上,或者某些特殊场合的应用,比如桌面程序,这些数据库产品就明显有一些臃肿。在这些情况下,嵌入式数据库的优势就特别明显了。

    嵌入式数据库无须独立运行的数据库引擎,它是由程序直接调用相应的API去实现对数据的存取操作。更直白的讲,嵌入式数据库是一种具备了基本数据库特性的数据文件。嵌入式数据库与其它数据库产品的区别是,前者是程序驱动式, 而后者是引擎响应式。嵌入式数据库的一个很重要的特点是它们的体积非常小,编译后的产品也不过几十K。这不但对桌面程序的数据存储方案是一个很好的选择,也使得它们可以应用到一些移动设备上。同时,很多嵌入式数据库在性能上也优于其它数据库,所以在高性能的应用上也常见嵌入式数据库的身影。

    下面介绍的是开放源代码的嵌入式数据库,SQLite。同时侧重研究如何应用Java连接SQLite数据库,并开发基于SQLite的应用程序。

    SQLite 是D ·理查德·希普开发出来的用一个小型C 库实现的一种强有力的嵌入式关系数据库管理体制。它提供了对SQL92 的大多数支持: 支持多表和索引、事务、视图、触发和一系列的用户接口及驱动

    SQLite 实现了完备的、可嵌入的、零配置的SQL数据库引擎。它的特点包括:

    1、事务处理是原子的、一致的、独立的和持久的(ACID),即使在系统崩溃和掉电以后。

    2、零配置,即不需要设置和管理。

    3、实现了绝大部分的SQL92标准。

    4、一个单独的磁盘文件存储一个完整的数据库。

    5、数据库文件在机器之间可自由共享。

    6、支持数据库文件大小至2TB。

    7、字符串和BLOG的大小只受限于可用存储器容量。

    8、代码量小,即小于30K的C代码行和小于250K的代码空间(gcc 在i486上)

    9、对于绝大多数普通操�

    相关文档:

    ★如何权衡?

    当你在权衡某个场合是否应该使用SQLite时,(在技术层面)至少要考虑如下几点:

    ◇能否发挥SQLite的某些特长?

    ◇是否还有其它的替代方案?

    ◇是否有啥潜在的技术风险?

    想清楚上述问题之后,再做出决策。

    ★SQLite的特点

    关于SQLite的特长,在上次的帖子中已经介绍过了。 ......

    因为项目需要,需要使用sqlite,在csdn的blog中,发现了此文章,

    以下系列均摘自:http://www.cnblogs.com/hustcat/  谢谢!

    1、SQLite介绍

    自几十年前出现的商业应用程序以来,数据库就成为软件应用程序的主要组成部分。正与数据库管理系统非常关键一样,它们也变得非常庞大,并占用了相当多的系统资源,增� ......

    SQLite和其他大部分现代SQL数据库在基本设计目标上是不同的,它的目标是简单。SQLite遵循这一目标,即使这样偶尔会导致某些特性实现的低效化。下面列举了SQLite的一些缺陷:

    SQL-92特性方面

    正如前面提到的,SQLite不支持SQL-92的在很多企业数据库系统中可用的一些特性。

    如:

    外键约束(可解析的,但非强制)

    很多ALT ......

    SQLite不仅可以把数据库 放在硬盘上,还可以放在内存中(sqlite3_open(":memory:", &db)),经测试,同样条件下数据库放在内存中比放在硬盘上插入记录速度快差不多3倍。但数据库放在内存中时有如下缺陷:

    1、断电或程序崩溃后数据库就会消失,你需要定期Attach到硬盘上备份;

    2、在内存中的数据库不能被别的进程 ......

    判断表存在的方法很简单,网上很多:

    SELECT COUNT(*) from sqlite_master where type='table' and name='%s'" % tname;

    那么判断字段是否存在, 或者说如何判断表的版本是否最新就只需要:

    select * from sqlite_master where tbl_name='tblContactList';

    sqlite_master 的表结构如下:

    type   |name&nbsp ......

    展开全文
  • 一、关系型数据库SQLIte  每个应用程序都要使用数据,Android应用程序也不例外,Android使用开源的、与操作系统无关的SQL数据库—SQLite。SQLite第一个Alpha版本诞生于2000年5月,它是一款轻量级数据库,它的设计...
  • python使用SQLite数据库

    2022-04-26 18:55:52
    SQLite是python自带的一款基于内存或硬盘的、开源的、关系型的轻量级数据库。这意味着无需下载安装SQLite数据库产品和对应的数据库驱动程序,可以被python语言以模块导入方式直接调用。 2、建立基于内存数据库 ...
  • 为了解决该问题,我们可以将数据写入内存数据库中,定时把内存数据库的数据保存到文件数据库中,较少磁盘的操作次数。 C代码 1.创建文件数据库; 2.创建内存数据库; 3.创建文件数据库表格; 4.创建内存数据库表格...
  • C++中内存数据库SQLite的使用

    千次阅读 2014-05-14 15:09:22
    1、 下载sqlite文件。 下载网址:http://www.sqlite.org/download.html...sqlite-dll-win32-x86-3080200.zip:包含sqlite3.def、sqlite3.dll文件。 sqlite-amalgamation-3080200.zip:包含sqlite3.h 文件
  • Delphi使用SQLite3内存数据库

    热门讨论 2014-11-11 16:22:58
    Delphi使用SQLite3,包括本地数据库和内存数据库,本地数据库加载到内存,内存数据库备份到本地,使用sqlite simple delphi包装类。
  • 内存数据库性能评测之SQLite数据库

    万次阅读 2016-09-13 16:38:13
    内存数据库性能评测之SQLite数据库 复制链接打印 2012年10月17日00:05 | 我来说两句(0人参与) | 保存到博客 IT168网  【IT168 专稿】SQLite是一款轻型的数据库,它...
  • 3、采用QSqlDatabase实现Sqlite内存数据库和文件数据库交互。 一、将文件数据库加载到内存数据库(示例见第三节) 1、打开文件数据库获取所有的表名,[关闭文件数据库]; 2、打开内存数据库,将文件数据库...
  • 内存数据库SQLite和H2比较

    万次阅读 2014-01-15 10:12:09
    内存数据库,顾名思义就是将数据放在内存中直接操作的数据库。...本文中主要为大家介绍两种内存数据库类型,即SQLite和H2内存数据库,将SQLite和H2内存数据库二者进行各方面性能的比较,希望对大家那
  • 轻量级开源内存数据库SQLite性能测试  SQLite是一款轻型的数据库,它占用资源非常的低,同时能够跟很多程序语言相结合,但是支持的SQL语句不会逊色于其他开源数据库。它的设计目标是嵌入式的,而且目前已经在很...
  • 我正在尝试使用Python中的sqlite3创建内存中的数据库。我创建了一个函数来创建一个数据库文件并将信息存储到其中,这是100%的工作。但是,试图与:memory:联系,我遇到了一些问题。我要做的是:import sqlite3def ...
  • Install-Package Microsoft.Data.Sqlite.Core Install-Package SQLitePCLRaw.bundle_winsqlite3 示例代码有 SQLitePCL.raw.SetProvider(new SQLitePCL.SQLite3Provider_winsqlite3()); // Using a name and a ...
  • 一、内存数据库:  在SQLite中,数据库通常是存储在磁盘文件中的。然而在有些情况下,我们可以让数据库始终驻留在内存中。常用的一种方式是在调用sqlite3_open()的时候,数据库文件名参数传递":memory:",如:  ...
  • Delphi内存数据库

    2016-03-18 12:17:23
    在内存中创建数据库,然后在创建表及编辑操作。 将内存数据库保存到文件中
  • 内存数据库:大数据时代数据管理新宠 在 2012中国系统架构师大会上,笔者曾做过一份有关大数据的调查,其中一项“在众多的技术趋势中,您所关注的数据管理的新技术是什么?”的调查结果中, “内存数据库”成为仅次...
  • sqlite内存数据库、文件数据库

    千次阅读 2019-07-16 09:06:13
    由于sqlite对多进程操作支持效果不太理想,在项目中,为了避免频繁读写 文件数据库带来的性能损耗,我们可以采用操作sqlite内存数据库,并将内存数据库定时同步到文件数据库中的方法。 实现思路如下: 1、创建...
  • sqlite内存数据库

    2011-12-27 08:02:51
    此资源有sqlite内存数据库和使用方法。
  • 本文实例讲述了Python实现读取TXT文件数据并存进内置数据库SQLite3的方法。分享给大家供大家参考,具体如下: 当TXT文件太大,计算机内存不够时,我们可以选择按行读取TXT文件,并将其存储进Python内置轻量级splite...
  • 由于直接访问文件型数据库太耗时,可以先将数据写入内存数据库,然后定时同步到文件中。但是这样做有风险,如果遇到设备掉电,会存在丢数据情况。 #include <iostream> #include <sqlite3.h> #...
  • 嵌入式数据库 sqlite 移植及使用一、实验目的二.实验内容三.预备知识四.实验设备及工具(包括软件调试工具)五.实验步骤5.1 移植嵌入式数据库 sqlite 一、实验目的 理解嵌入式软件移植的基本方法,掌握 sqlite ...
  • 由于sqlite对多进程操作支持效果不太理想,在项目中,为了避免频繁读写 文件数据库带来的性能损耗,我们可以采用操作sqlite内存数据库,并将内存数据库定时同步到文件数据库中的方法。 实现思路如下: 1、创建文件...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 52,947
精华内容 21,178
关键字:

内存数据库 sqlite