SQLite数据库使用总结
1.在SQLite中插入当前时间,变量定义不用多说
char *sql = sqlite3_mprintf("insert into Log VALUES(datetime('now', 'localtime'), '%q', '%q')", cUser, cLogContent);
int ret = sqlite3_exec(Sqlite3, sql, NULL, NULL, &pErrMsg);
以月份为单位统计出符合当前月份的记录, Time为数据库中字段名:
char *sql = sqlite3_mprintf("select * from Log where Time>=datetime('now','start of month') order by Time DESC");
sqlite3_prepare(sqlite3_db, sql, -1, &pStmt, &pzTail);
int ret = sqlite3_step(pStmt);
while (ret == SQLITE_ROW)
{
...
ret = sqlite3_step(pStmt);
}
以时间段来查询,界面提示的时间为YYYY-MM-DD格式,cStartTime, cEndTime为char *储存的是时间YYYY-MM-DD:
char *sql = sqlite3_mprintf("select * from Log where Time between datetime('%q','start of day') and datetime('%q','start of
day','+1 day') order by Time DESC", cStartTime, cEndTime);
sqlite3_prepare(sqlite3_db, sql, -1, &pStmt, &pzTail);
int ret = sqlite3_step(pStmt);
while (ret == SQLITE_ROW)
{
...
ret = sqlite3_step(pStmt);
}
2.注意:切记在错误处理中,也要把打开的数据库关闭,不然带来不必要的麻烦
3.大量数据处理是,用事务,事半功倍
4.用sqlite3_open16(L"data.db", &m_sqlite3);打开数据库时,必须加上L
相关文档:
前序:
Sqlite3 的确很好用。小巧、速度快。但是因为非微软的产品,帮助文档总觉得不够。这些天再次研究它,又有一些收获,这里把我对 sqlite3 的研究列出来,以备忘记。
这里要注明,我是一个跨平台专注者,并不喜欢只用 windows 平台。我以前的工作就是为 unix 平台写代码。下面我所写的东西,虽然没有验证,但是我已尽 ......
最近由于项目需要, 要在wince4.2, wince5.0, mobile三种机型上面做大数据量的查询,初步估计在50W-500W条记录之间。
由于以前做mobile5的数据库项目主要是采用C#来写,而且数据量也顶多几万条,所以,为了确保项目后期少走弯路,我特意做了一下移动数据库性能测试。下面是这周的工作记录。供大家参考。
一. 由于wince4.2 ......
import os
import unittest # 包含单元测试模块
import sqlite3 as sqlite # 包含sqlite3模块
def get_db_path():
return "sqlite_testdb"
class TransactionTests(unittest.TestCase): # 单元测试第一步: 由TestCase派生类
def setUp(self): # 单元测试环境配置
......
1、如果使用sqlite3时出现如下错误:
/!\ FAILSAFE /!\ Thu Jul 30 22:16:15 +0800 2009
Status: 500 Internal Server Error
unknown error
c:/ruby/lib/ruby/1.8/dl/import.rb:29:in `initialize'
c:/ruby/lib/ruby/1.8/dl/import.rb:29:in `dlopen'
&nb ......
从网上找的例子,创建了一个数据库,追加了几条记录后,然后关闭数据库,然后准备向PDA下载数据库,发现文件竟然被占用了,已经关闭了数据库连接也无效,后来从网上看到需要清除连接池
using (SQLiteConnection cn = new SQLiteConnection("Data Source=" + strTempPath + "\\Smoke.db3;Pooling=true;FailIfMissing=false ......