2012年8月9日
摘要: SQlite3数据库连接完成之后,就可以执行SQL命令了。下面将要介绍的prepare和step函数都是用来操作和执行SQL命令的。 典型的函数操作流程(伪代码): /* create a statement from an SQL string */ sqlite3_stmt *stmt = NULL; sqlite3_prepare_v2( db, sql_str, sql_str_len, &stmt, NULL ); /* use the statement as many times as required */ 阅读全文
posted @ 2012-08-09 17:16 风行雪舞 阅读(1268) 评论(0) 推荐(0) 编辑
摘要: 使用jdbc测了一下sqlite3的插入数据的效率,使用整体事务与不使用整体事务,差别非常明显。 cpu: 1G, 内存:512MB 使用整体事务:1000000条记录,需要93秒钟。 使用逐个插入提交事务:1秒钟只能处理20条记录。 启动程序时把java堆最 使用jdbc测了一下sqlite3的插入数据的效率,使用整体事务与不使用整体事务,差别非常明显。 cpu: 1G, 内存:512MB 使用整体事务:1000000条记录,需要93秒钟。 使用逐个插入提交事务:1秒钟只能处理20条记录。 启动程序时把java堆最大空间设大一些,不然可能出现内存不够的异常。 java -Xmx256M TestConn 阅读全文
posted @ 2012-08-09 17:07 风行雪舞 阅读(941) 评论(0) 推荐(0) 编辑
摘要: 在sqlite编程中多线程同时写时会出现异常,我写了个类来解决这个问题。 思路很简单,就是在开始写操作时,记下写操作的托管线程id,表示目前有线程正在做写操作;其他线程来写时,需要先检测是否有进程正在做写操作,如果有就需要等待,等待到某一个配置的超时时间时,会抛出异常终止等待;如果没有则直接放行,此线程可以获得写锁。最后写操作执行完毕时需要释放锁。 下面是具体的代码: 阅读全文
posted @ 2012-08-09 17:06 风行雪舞 阅读(1243) 评论(0) 推荐(0) 编辑
摘要: SQLite和其他大部分现代SQL数据库在基本设计目标上是不同的,它的目标是简单。SQLite遵循这一目标,即使这样偶尔会导致某些特性实现的低效化。下面列举了SQLite的一些缺陷: SQL-92特性方面 正如前面提到的,SQLite不支持SQL-92的在很多企业数据库系统中可用的一些特性。 如: 外键约束(可解析的,但非强制) 很多ALTER TABLE特性 一些TRIGGER相关的特性 RIGHT和FULL OUTER JOIN 更新一个VIEW GRANT和REVOKE 你可以在SQLite的主页上获取最新信息。 http://www.sqlite.org/omitted.html http://www.sqlite.org/cvstrac/wiki?p=UnsupportedSql 阅读全文
posted @ 2012-08-09 17:05 风行雪舞 阅读(1014) 评论(0) 推荐(0) 编辑
摘要: sqlite 内存数据库的attach 我已经往内存数据库A插入了10W条数据,我现在想把A导入一个物理文件B(具有相同表结构),是不是应该用attach指令?有没有高人详细指点一下? sqlite3_open(":memory:", &db); ... ret = sqlite3_exec(db, "CREATE TABLE new_table1 (id integer primary key autoincrement,name vchar(32))", 0, 0, &zErrMsg); ret = sqlite3_exec(db,"begin transaction",0,0,&zErrMsg); ret = sqlite3_exec(db, "insert into new_table1 (name) values ('123');", 0, 0,&zErrMsg); 阅读全文
posted @ 2012-08-09 17:04 风行雪舞 阅读(1167) 评论(0) 推荐(0) 编辑
摘要: Sqlite3 的确很好用。小巧、速度快。但是因为非微软的产品,帮助文档总觉得不够。这些天再次研究它,又有一些收获,这里把我对 sqlite3 的研究列出来,以备忘记。 这里要注明,我是一个跨平台专注者,并不喜欢只用 windows 平台。我以前的工作就是为 unix 平台写代码。下面我所写的东西,虽然没有验证,但是我已尽量不使用任何 windows 的东西,只使用标准 C 或标准C++。但是,我没有尝试过在别的系统、别的编译器下编译,因此下面的叙述如果不正确,则留待以后修改。 下面我的代码仍然用 VC 编写,因为我觉得VC是一个很不错的IDE,可以加快代码编写速度(例如配合 Vassist )。下面我所说的编译环境,是VC2003。如果读者觉得自己习惯于 unix 下用 vi 编写代码速度较快,可以不用管我的说明,只需要符合自己习惯即可,因为我用的是标准 C 或 C++ 。不会给任何人 阅读全文
posted @ 2012-08-09 16:53 风行雪舞 阅读(1428) 评论(0) 推荐(0) 编辑
无觅相关文章插件,快速提升流量