#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. Workman websocket 握手连接

    默认的是TCP连接方式,如果需要WebSocket,则需要更改Gateway方式, 服务端协议要和客户端协议一致才能通讯.客户端是websocket协议,服务端也要设置成websocket协议.默认为 ...

  2. [BZOJ4199][Noi2015]品酒大会 树形DP+后缀自动机

    由于要找后缀的前缀,所以先用反串建立SAM. link边组成了后缀树. 两个子串的最长公共前缀是LCA的step 树形dp即可. #include<iostream> #include&l ...

  3. Rescue The Princess

    Description Several days ago, a beast caught a beautiful princess and the princess was put in prison ...

  4. PowerDesigner用例图展示设置

    powerdesigner用例图显示设置 powerdesigner中的绘图功能真是不敢恭维,折线半天弄不直,直线半天弄不弯. 1.修改显示设置 tools-->display preferen ...

  5. Codeforces Round #283 (Div. 2) D. Tennis Game(模拟)

    D. Tennis Game time limit per test 2 seconds memory limit per test 256 megabytes input standard inpu ...

  6. [BZOJ3816][清华集训2014]矩阵变换(稳定婚姻问题)

    3816: 矩阵变换 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 803  Solved: 578[Submit][Status][Discuss] ...

  7. Problem I: 零起点学算法30——输出四位完全平方数

    #include<stdio.h> int main() { int a,b,c,d,s,i; ;i<;i++){ s=i*i; a=s/; b=s%/; c=s%/; d=s%; ...

  8. Problem E: 零起点学算法25——判断是否直角三角形

    #include<stdio.h> int main() { int a,b,c; while(scanf("%d %d %d",&a,&b,& ...

  9. FCL研究-目录

    准备深入的学习下 FCL,太过于庞大,有些无从下口.用最笨的方法,先从常用的几个命名空间入手. 微软发布了.NET 的源码,学习起来更加方便了. 集合 导航: FCL研究-集合- System.Col ...

  10. Scala零基础教学【41-60】

    第41讲:List继承体系实现内幕和方法操作源码揭秘 def main(args: Array[String]) { /** * List继承体系实现内幕和方法操作源码揭秘 * * List本身是一个 ...