C++开发SQLite3的使用总结

来源:互联网 发布:元老院知乎 编辑:程序博客网 时间:2024/05/19 04:04

首先,SQLite3的非常轻量级的数据库。刚刚进入一家公司,对于数据库完全外行,突然接到一个关于数据库的任务,顿时凌乱了,回来找了n多资料,经过一个星期的奋斗,终于完成了这样任务。非常感谢各位网友的对SQLite3的经验分享!

1、下载Sqlite3数据的必备文件,

可以再我的资源中找到,只需要把他们包含在你的工程中,就可以使用了。

2、查看CPPSqlite3的例子

在这里可以查看http://www.codeproject.com/Articles/6343/CppSQLite-C-Wrapper-for-SQLite;

不过这里貌似有个地方运行不过,更改一些地方:

a、将出现CppSQLite的地方改为CppSQLite3,比如CppSQLiteDB db;改为CppSQLite3DB db;

b、数据库直接创建在系统盘的根目录下会出现创建失败,更改其他盘

c、CppSQLite3Query的成员函数调用出错,改为fieldDeclType;

d、在cout << endl << "Transaction test, creating " << nRowsToCreate; 前面加上

q.finalize();

这样就可以一直运行到底了;

这个例子中有绝大部分的使用说明,有什么不懂的可以直接看Sqlite3的说明,这个库的注释非常给力

3、Sqlite3创建数据库时包含中文路径将会出错

Sqlite使用utf-8编码进行打开文件操作,所以必须转换为utf-8编码格式,下面提供一个转换的函数

char* GB2312ToUTF8(const char* gb2312){int len = MultiByteToWideChar(CP_ACP, 0, gb2312, -1, NULL, 0);wchar_t* wstr = new wchar_t[len+1];memset(wstr, 0, len+1);MultiByteToWideChar(CP_ACP, 0, gb2312, -1, wstr, len);len = WideCharToMultiByte(CP_UTF8, 0, wstr, -1, NULL, 0, NULL, NULL);char* str = new char[len+1];memset(str, 0, len+1);WideCharToMultiByte(CP_UTF8, 0, wstr, -1, str, len, NULL, NULL);if(wstr) delete[] wstr;return str;}

4、字段含有空格的处理

使用[]符号将字段名包含起来

   5、想要数据库实现什么功能,直接写SQL语句实现吧

经常这样用:

CppSQLite3DB db;db.execDML("begin transaction;");db.execDML("SQL语句");CppSQLite3Query q = db.execQuery("SQL语句");db.execDML("commit transaction;");

由于个人水平所限,如有什么错漏,欢迎指正,谢谢!



0 0
原创粉丝点击