打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
使用sqlite创建内存数据
sqlite支持创建数据库,如果建立多个链接链接该库需要执行ATTACH命令

//创建内存数据库 
sqlite3 *db;  
sqlite3 *tmp;  
 rc = sqlite3_open("new1.db", &db);
if( rc ){  
   fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));  
   return(0);  
}else{  
   fprintf(stderr, "Opened database successfully\n");  
  
/*执行attach*/  
rc = sqlite3_open("new2.db", &tmp);  
rc = sqlite3_exec(tmp,"attach 'new.db' as newdb",0,0,&zErrMsg);     
if( rc != SQLITE_OK ){  
   fprintf(stderr, "SQL error: %s\n", zErrMsg);  
   sqlite3_free(zErrMsg);  
}    

两个数据库连接db和tmp,通过attach命令连接到new1.db,但是两个连接有不同之处。new.db存在表select,使用db查询时执行如下sql

select * from test

tmp连接通过带有模式的查询sql

  select * from newdb.test

这样两个连接都可以操作new1.db了。

创建内存数据库需要数据文件名改成“:memory:”,注意前后都有要分号,要不不是内存数据,


//创建内存数据库  
rc = sqlite3_open(":memory:", &db);  
if( rc ){  
   fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));  
   return(0);  
}else{  
   fprintf(stderr, "Opened database successfully\n");  
}  

但是通过attach命令无法实现两个链接共享一个内存数据库,实验证明attach后会新创建一个内存数据库,解决的办法有两个:

1、将一部分内存虚拟一个磁盘,SQLite的数据库就放到这个虚拟磁盘中。

2、升级到最新版本的sqlite,支持多个链接共享内存数据库,详细做法参考:

https://www.sqlite.org/inmemorydb.html
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
SQLite入门与分析(二)---设计与概念 --SQLite 中文社区-- http:/...
mini2440 sqlite
sqlite学习之一 初试c调用sqlite
在VS2008下编译sqlite3
linux c编程操作数据库(sqlite3应用)
<2>sqlite3数据库c语言sqlite3_prepare_v2插入数据
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服