sqlite解决中文路径问题
// sqlite解决中文路径问题,以前研究sqlite时候遇到的中文路径问题的解决方法
// AnsiString cb中的字符串类,其它编译器用std::string替换即可.
// MultiByteToWideChar是windows api
AnsiString fileName;
int strSize = fileName.Length();
char *ansi = new char[strSize+1];
wchar_t *unicode = new wchar_t[strSize+1];
StrCopy(ansi,fileName.c_str());
MultiByteToWideChar(CP_ACP,0,ansi,strSize,unicode,strSize);
sqlite3_open16(unicode,&Sqlitedb);
delete []ansi;
delete []unicode;
相关文档:
(4) 事务处理
sqlite 是支持事务处理的。如果你知道你要同步删除很多数据,不仿把它们做成一个统一的事务。
通常一次 sqlite3_exec 就是一次事务,如果你要删除1万条数据,sqlite就做了1万次:开始新事务->删除一条数据->提交事� ......
因为项目需要,需要使用sqlite,在csdn的blog中,发现了此文章,
以下系列均摘自:http://www.cnblogs.com/hustcat/ 谢谢!
1、SQLite介绍
自几十年前出现的商业应用程序以来,数据库就成为软件应用程序的主要组成部分。正与数据库管理系统非常关键一样,它们也变得非常庞大,并占用了相当多的系统资源,增� ......
主要通过pragma指令来实现。
比如: 空间释放、磁盘同步、Cache大小等。
不要打开。前文提高了,Vacuum的效率非常低!
PRAGMA auto_vacuum;
PRAGMA auto_vacuum = 0 | 1;
查询或设置数据库的auto-vacuum标记。
正常情况下,当提交一个从数据库中删除数据的事务时,数据库文件不改变大小。未使用的文件页被标记并在以 ......
SQLite不仅可以把数据库 放在硬盘上,还可以放在内存中(sqlite3_open(":memory:", &db)),经测试,同样条件下数据库放在内存中比放在硬盘上插入记录速度快差不多3倍。但数据库放在内存中时有如下缺陷:
1、断电或程序崩溃后数据库就会消失,你需要定期Attach到硬盘上备份;
2、在内存中的数据库不能被别的进程 ......
判断表存在的方法很简单,网上很多:
SELECT COUNT(*) from sqlite_master where type='table' and name='%s'" % tname;
那么判断字段是否存在, 或者说如何判断表的版本是否最新就只需要:
select * from sqlite_master where tbl_name='tblContactList';
sqlite_master 的表结构如下:
type |name  ......