sqlite3 解决并发读写冲突的问题
#include "stdafx.h"
#include "sqlite3.h"
#include <iostream>
#include <process.h> //sqllite 相关变量
sqlite3 *sql_db;
char *sql_ErrMsg;
int sql_rc;
sqlite3_stmt *sql_statement; //写入重试客克服锁库的问题
void sql_insert_proc(char insert_state[])
{
while ()
{
if (SQLITE_OK != sqlite3_exec(sql_db, insert_state, , , &sql_ErrMsg))
{
if (strstr(sql_ErrMsg, "database is locked"))
{
printf("try again!\n");
continue;
}
else
{
printf("other error! \n");
break;
}
}
else
{
printf("ok insert !\n");
break;
}
}
} int _tmain(int argc, _TCHAR* argv[])
{
sql_rc = sqlite3_open("C:\\SQLite\\test.db", &sql_db);
if (sql_rc){
fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(sql_db));
sqlite3_close(sql_db);
return();
}
printf("hello world!\n");
getchar();
int i; for (i = ; i < ; i++)
{
int step_result = SQLITE_BUSY;
char select_statement[] = "";
char selectname[] = ""; //读取重试克服锁库的问题
//SQLITE_ERROR、SQLITE_BUSY、SQLITE_MISUSE、SQLITE_ROW、SQLITE_DONE
while (step_result == SQLITE_BUSY)
{
memset(select_statement, , );
memset(selectname, , ); sprintf_s(select_statement, "select name from test order by id desc limit 1"); sql_rc = sqlite3_prepare(sql_db, select_statement, -, &sql_statement, NULL); if (sql_rc != SQLITE_OK)
{
fprintf(stderr, "prepare error return code = %d\n", sql_rc);
} step_result = sqlite3_step(sql_statement); while (step_result == SQLITE_ROW)
{
strcpy_s(selectname, (char *)sqlite3_column_text(sql_statement, ));
step_result = sqlite3_step(sql_statement);
} sqlite3_finalize(sql_statement);
} printf("index = %d : %s\n", i, selectname);
} /*
for (i = 0; i < 10000; i++)
{
char insert_statement[400] = "";
sprintf_s(insert_statement, "insert into test (name) values('proc1 hello %d')", i);
printf("%s\n", insert_statement);
sql_insert_proc(insert_statement);
}
*/ sqlite3_close(sql_db);
return ;
}
sqlite3 解决并发读写冲突的问题的更多相关文章
- php中并发读写文件冲突的解决方案
在这里提供4种高并发读写文件的方案,各有优点,可以根据自己的情况解决php并发读写文件冲突的问题. 对于日IP不高或者说并发数不是很大的应用,一般不用考虑这些!用一般的文件操作方法完全没有问题.但如果 ...
- php中并发读写文件冲突的解决方案(文件锁应用示例)
PHP(外文名: Hypertext Preprocessor,中文名:“超文本预处理器”)是一种通用开源脚本语言.语法吸收了C语言.Java和Perl的特点,入门门槛较低,易于学习,使用广泛,主要适 ...
- 分享十:php中并发读写文件冲突的解决方案
对于日IP不高或者说并发数不是很大的应用,一般不用考虑这些!用一般的文件操作方法完全没有问题.但如果并发高,在我们对文件进行读写操作时,很有可能多个进程对进一文件进行操作,如果这时不对文件的访问进行相 ...
- Xml文件并发读写的解决方法
之前对xml的操作大都是通过XmlDocument对象来进行,但是这样的情况对于没有并发的是非常合适的,最近遇到了并发读写xml文件的情况.通过文件流来操作能解决大部分的并发情况,对于极端的情况会有问 ...
- Sqlite3并发读写注意事项
最近项目中涉及到sqlite并发读写的问题,参考一些文档并结合自己的实践,对sqlite3并发问题总结了几点: sqlite3的锁及事务类型 sqlite3总共有三种事务类型:BEGIN [DEFER ...
- golang中map并发读写问题及解决方法
一.map并发读写问题 如果map由多协程同时读和写就会出现 fatal error:concurrent map read and map write的错误 如下代码很容易就出现map并发读写问题 ...
- 并发读写缓存实现机制(一):为什么ConcurrentHashMap可以这么快?
大家都知道ConcurrentHashMap的并发读写速度很快,但为什么它会这么快?这主要归功于其内部数据结构和独特的hash运算以及分离锁的机制.做游戏性能很重要,为了提高数据的读写速度,方法之一就 ...
- EntityFramework Core解决并发详解
前言 对过年已经无感,不过还是有很多闲暇时间来学学东西,这一点是极好的,好了,本节我们来讲讲EntityFramewoek Core中的并发问题. 话题(EntityFramework Core并发) ...
- 【漫画】CAS原理分析!无锁原子类也能解决并发问题!
本文来源于微信公众号[胖滚猪学编程].转载请注明出处 在漫画并发编程系统博文中,我们讲了N篇关于锁的知识,确实,锁是解决并发问题的万能钥匙,可是并发问题只有锁能解决吗?今天要出场一个大BOSS:CAS ...
随机推荐
- <Linux性能调优指南>主要思路流程
网上IBM很早放出的一本免费电子书, 十来年了,参考意义还是很大. 国内有翻译成中文在线阅读的版本. 见如下两个URL Linux Performance and Tuning Guidelines ...
- 正则表达式筛选出jpg、png的图片url
有些字符串也不是富文本,也不是带标准标签的图片地址和文字.想筛选出所有图片或地址怎么办呢.话不多说直接上带码. private static void reg() { // TODO Auto-gen ...
- AC日记——病毒侵袭 hdu 2896
2896 思路: 好题: 代码: #include <queue> #include <cstdio> #include <cstring> using names ...
- AC日记——[HNOI2008]越狱 bzoj 1008
1008 思路: 越狱情况=总情况-不越狱情况: 代码: #include <cstdio> #include <cstring> #include <iostream& ...
- UVA12096 集合栈计算机(map和vector实现双射关系+集合的交并运算的STL)
题目大意: 对于一个以集合为元素的栈,初始时栈为空. 输入的命令有如下几种: PUSH:将空集{}压栈 DUP:将栈顶元素复制一份压入栈中 UNION:先进行两次弹栈,将获得的集合A和B取并集,将结果 ...
- python3爬虫爬取猫眼电影TOP100(含详细爬取思路)
待爬取的网页地址为https://maoyan.com/board/4,本次以requests.BeautifulSoup css selector为路线进行爬取,最终目的是把影片排名.图片.名称.演 ...
- C++string类常用函数
C++string类常用函数 string类的构造函数:string(const char *s); //用c字符串s初始化string(int n,char c); //用n个字符c初 ...
- 【PHP】mysql基本操作整合
php版本:PHP Version 5.5.1 环境:windows10 XMAPP 数据库:mysql 代码: <?php function connetionDB($servername, ...
- Reference resources
CentOS7 (精简操作指令) http://www.centoscn.com/CentOS/help/2016/0429/7147.html
- 【博弈论】【SG函数】【枚举】bzoj1874 [BeiJing2009 WinterCamp]取石子游戏
枚举第一步可能达到的状态,判断是否是必败态即可. #include<cstdio> #include<set> #include<cstring> using na ...