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 ...
随机推荐
- k8s的应用打包工具Helm
每个成功的软件平台都有一个优秀的打包系统,比如 Debian.Ubuntu 的 apt,Redhat.Centos 的 yum.而 Helm 则是 Kubernetes 上的包管理器. 本章我们将讨论 ...
- linux上redis的安装与配置
1.redis安装 wget http://download.redis.io/releases/redis-4.0.8.tar.gz tar xzf redis-4.0.8.tar.gz ln -s ...
- let变量声明总结
let命令有四大主要特性:存在块级作用域,没有变量提升,暂时性死区,不允许重复声明. 这都是和es5的var变量特性相反的. 1.存在块级作用域 let命令声明的变量只在其块级作用域中有效,就是{}中 ...
- 树链剖分【CF343D】Water Tree
Description Mad scientist Mike has constructed a rooted tree, which consists of nnvertices. Each ver ...
- 一个Sqrt函数引发的血案
源码下载地址:http://diducoder.com/sotry-about-sqrt.html 好吧,我承认我标题党了,不过既然你来了,就认真看下去吧,保证你有收获. 我们平时经常会有一些数据运算 ...
- py thon 多线程(转一篇好文章)
http://www.cnblogs.com/fnng/p/3670789.html
- [Android]--RadioGroup+RadioButton实现底部导航栏
RadioGroup+RadioButton组合方式打造简单实用的底部导航栏 代码块: <?xml version="1.0" encoding="utf-8&qu ...
- 小程序与h5的相互跳转
1, 小程序跳h5 <web-view src="https://zgl.seamo.cn/zglh5/kjzjlist1.html"></web-view> ...
- 用 HTML 元素实现自定义的滚动条
有时,浏览器默认的滚动条不能满足需求,我们要实现自定义的滚动条.借助于鼠标移动事件和滚轮事件,以及内容元素的滚动相关属性,可以很容易地实现这样的需求.下面就来试一试. 我们这次要实现的滚动条需要有以下 ...
- Visual Studio 版本互转工具
Visual Studio 版本互转工具 http://www.cnblogs.com/flydoos/archive/2011/08/20/2146121.html http://www.cnblo ...