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 ...
随机推荐
- ANSI、ASCII、Unicode和UTF-8编码
来自:http://blog.163.com/yang_jianli/blog/static/161990006201371451851274/ --------------------------- ...
- git add 文档
GIT-ADD(1) Git Manual GIT-ADD(1) NAME git-add - Add file contents to the index SYNOPSIS git add [-n] ...
- Docker容器进入的4种方式(转)
这个文章不错,几种方式及使用范围都讲得清楚. 另外,还有一个文章说了为什么docker中并不合适ssh服务安装的情况. 我现在也是用第四种方式, docker exec -it [docker容器ID ...
- React Native - 2 控件Flexbox
*强烈建议使用Genymotion模拟器,比AVD速度快,功能强大. 1. flexDirection Flexbox是连续布局,它有主轴(primary axis)和交叉轴(cross axis ...
- 自定义的一个JDBC工具类
package JDBCutils; import java.io.File;import java.io.FileInputStream;import java.sql.Connection;imp ...
- 开源的图像滤镜库----for Android
1.GPUImage for Android(推荐使用) GPUImage基于OpenGL实现的各种各样图像滤镜(图像处理)效果,多达50多种, idea源于GPUImage for iOS,基本囊括 ...
- D - Interesting Calculator 【数值型BFS+优先队列】
There is an interesting calculator. It has 3 rows of buttons. Row 1: button 0, 1, 2, 3, ..., 9. Pres ...
- CSU 1337 搞笑版费马大定理【优化枚举】
费马大定理:当n>2时,不定方程an+bn=cn没有正整数解.比如a3+b3=c3没有正整数解.为了活跃气氛,我们不妨来个搞笑版:把方程改成a3+b3=c3,这样就有解了,比如a=4, b=9, ...
- 遇见requestAnimationFrame
今天,在读javascript异步编程的js事件深入理解部分的时候,了解到了requestAnimationFrame 这个api,在这里记录一下. 原文: setTimeout 和 setInter ...
- 洛谷——P2556 [AHOI2002]黑白图像压缩
P2556 [AHOI2002]黑白图像压缩 题目描述 选修基础生物基因学的时候, 小可可在家里做了一次图像学试验. 她知道:整个图像其实就是若干个图像点(称作像素)的序列,假定序列中像素的个数总是 ...