#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 解决并发读写冲突的问题的更多相关文章

  1. php中并发读写文件冲突的解决方案

    在这里提供4种高并发读写文件的方案,各有优点,可以根据自己的情况解决php并发读写文件冲突的问题. 对于日IP不高或者说并发数不是很大的应用,一般不用考虑这些!用一般的文件操作方法完全没有问题.但如果 ...

  2. php中并发读写文件冲突的解决方案(文件锁应用示例)

    PHP(外文名: Hypertext Preprocessor,中文名:“超文本预处理器”)是一种通用开源脚本语言.语法吸收了C语言.Java和Perl的特点,入门门槛较低,易于学习,使用广泛,主要适 ...

  3. 分享十:php中并发读写文件冲突的解决方案

    对于日IP不高或者说并发数不是很大的应用,一般不用考虑这些!用一般的文件操作方法完全没有问题.但如果并发高,在我们对文件进行读写操作时,很有可能多个进程对进一文件进行操作,如果这时不对文件的访问进行相 ...

  4. Xml文件并发读写的解决方法

    之前对xml的操作大都是通过XmlDocument对象来进行,但是这样的情况对于没有并发的是非常合适的,最近遇到了并发读写xml文件的情况.通过文件流来操作能解决大部分的并发情况,对于极端的情况会有问 ...

  5. Sqlite3并发读写注意事项

    最近项目中涉及到sqlite并发读写的问题,参考一些文档并结合自己的实践,对sqlite3并发问题总结了几点: sqlite3的锁及事务类型 sqlite3总共有三种事务类型:BEGIN [DEFER ...

  6. golang中map并发读写问题及解决方法

    一.map并发读写问题 如果map由多协程同时读和写就会出现 fatal error:concurrent map read and map write的错误 如下代码很容易就出现map并发读写问题 ...

  7. 并发读写缓存实现机制(一):为什么ConcurrentHashMap可以这么快?

    大家都知道ConcurrentHashMap的并发读写速度很快,但为什么它会这么快?这主要归功于其内部数据结构和独特的hash运算以及分离锁的机制.做游戏性能很重要,为了提高数据的读写速度,方法之一就 ...

  8. EntityFramework Core解决并发详解

    前言 对过年已经无感,不过还是有很多闲暇时间来学学东西,这一点是极好的,好了,本节我们来讲讲EntityFramewoek Core中的并发问题. 话题(EntityFramework Core并发) ...

  9. 【漫画】CAS原理分析!无锁原子类也能解决并发问题!

    本文来源于微信公众号[胖滚猪学编程].转载请注明出处 在漫画并发编程系统博文中,我们讲了N篇关于锁的知识,确实,锁是解决并发问题的万能钥匙,可是并发问题只有锁能解决吗?今天要出场一个大BOSS:CAS ...

随机推荐

  1. 分析函数调用堆栈的原理和Delphi实现

    来自:http://blog.163.com/liuguang_123/blog/static/816701920105262543890/ ----------------------------- ...

  2. Selenium2+python自动化54-unittest生成测试报告(HTMLTestRunner)【转载】

    前言 批量执行完用例后,生成的测试报告是文本形式的,不够直观,为了更好的展示测试报告,最好是生成HTML格式的. unittest里面是不能生成html格式报告的,需要导入一个第三方的模块:HTMLT ...

  3. docker从零开始(一)centos获取安装docker-ce

    卸载旧版本 较旧版本的Docker被称为docker或docker-engine.如果已安装这些,请卸载它们以及相关的依赖项. centos7 yum安装的docker就是docker-engine ...

  4. Oracle迁移到DB2常用转换

    因为项目需要,要将Oracle上的东西转移到DB2,于是收集整理了一些需要修改点的注意事项,拿出来大家分享. ORACLE和DB2实现相同功能的实例(主要以Oracle8I和DB2 7.X为例,已测试 ...

  5. 文件的上传(TCP)

    问题描述:将本地文件上传(需将文件名一起上传)至指定服务器,服务器将上传的文件保存至指定路径下并文件名添加前缀 "Downlod_原文件名". 思路: 客户端需要一个输入流来读取本 ...

  6. mongodb复制集搭建

    注:mongodb当前版本是3.4.3 1.准备三个虚拟机做服务器 192.168.168.129:27017 192.168.168.130:27017 192.168.168.131:27017 ...

  7. 服务器重启之后wdcp打不开【解决】

    service wdapache restart

  8. qt资源下载网站

    1. 所有Qt版本下载地址: http://download.qt.io/archive/qt/ 2. 所有Qt Creator下载地址: http://download.qt.io/archive/ ...

  9. poj1789 最小生成树

    题目连接:http://poj.org/problem?id=1789 Description Advanced Cargo Movement, Ltd. uses trucks of differe ...

  10. Linux命令之ip

    ip [ OPTIONS ] OBJECT { COMMAND | help } 这一条命令几乎包含了所有使用方法,其中 对象OBJECT={ link | addr | addrlabel | ro ...