sqlite学习笔记之sqlite3_open函数的使用
2015-12-27 19:59
489 查看
作者:朱金灿
来源:http://blog.csdn.net/clever101
打开sqlite数据库需要用到sqlite3_open函数,但是sqlite3_open函数的第一个参数是数据库文件的绝对路径。它是有讲究的,必须是utf8字符串。也就是说假如文件路径是非utf8字符,就得转为utf字符。于是参考网上的资料,写了一个最常用的从多字节转utf8的函数,代码如下:
测试代码如下:
参考文献:1. sqlite3问题2:中文路径的支持
来源:http://blog.csdn.net/clever101
打开sqlite数据库需要用到sqlite3_open函数,但是sqlite3_open函数的第一个参数是数据库文件的绝对路径。它是有讲究的,必须是utf8字符串。也就是说假如文件路径是非utf8字符,就得转为utf字符。于是参考网上的资料,写了一个最常用的从多字节转utf8的函数,代码如下:
// 编译环境:VS 2008+sp1,Win7, 工程设置为多字节字符集 std::string MbcsToUtf8( const char* pszMbcs ) { std::string str; WCHAR *pwchar=0; CHAR *pchar=0; int len=0; int codepage = AreFileApisANSI() ? CP_ACP : CP_OEMCP; len=MultiByteToWideChar(codepage, 0, pszMbcs, -1, NULL,0); pwchar=new WCHAR[len]; if(pwchar!=0) { len = MultiByteToWideChar(codepage, 0, pszMbcs, -1, pwchar, len); if( len!=0 ) { len = WideCharToMultiByte(CP_UTF8, 0, pwchar, -1, 0, 0, 0, 0); pchar=new CHAR[len]; if(pchar!=0) { len = WideCharToMultiByte(CP_UTF8, 0, pwchar, -1, pchar, len,0, 0); if(len!=0) { str = pchar; } delete pchar; } delete pwchar; } } return str; }
测试代码如下:
// 编译环境:VS 2008+sp1,Win7, 工程设置为多字节字符集 #include <sqlite3.h> #include <string> int main(void) { sqlite3* db = 0; char* pszErrMsg = NULL; // 连接数据库 std::string strImgIndexFileName = “C:\\test.db” std::string strUtf8File = MbcsToUtf8(strImgIndexFileName.c_str()); int ret = sqlite3_open(strUtf8File.c_str(),&db); if ( ret != SQLITE_OK ) { fprintf(stderr, "无法打开数据库: %s", sqlite3_errmsg(db)); return 1; } return 0; }
参考文献:1. sqlite3问题2:中文路径的支持
相关文章推荐
- PL/SQL Developer使用技巧以及快捷键设置
- (转)运维角度浅谈MySQL数据库优化
- SQL truncate 、delete与drop区别
- SQLServer 维护脚本分享(11)部分DBCC及系统存储过程
- SQLServer 维护脚本分享(10)索引
- django 连接sqlserver总是出错,以及怎样使用django-mssql连接sql server2008数据库。
- SQLServer 维护脚本分享(09)相关文件读取
- XenDesktop5.6连接外部SQL Server数据库步骤
- Sql2008 r2 使用ftp 公布和订阅方式同步数据
- SQL SERVER删除列,报错."由于一个或多个对象访问此列,ALTER TABLE DROP COLUMN ... 失败"
- 通过PLSQL Developer导入导出表结构
- SQLServer 维护脚本分享(08)临时数据库(tempdb)
- SQLServer 维护脚本分享(07)IO
- SQLServer 维护脚本分享(06)CPU
- SQLServer 维护脚本分享(05)内存(Memory)
- 无法使用SQL 2012服务器上创建新的XenDesktop站点
- mysql的SQL性能监控
- Linux运维 第四阶段(九)MySQL REPLICATION(rw-splitting)
- Linux运维 第四阶段(八)MySQL REPLICATION(SSL)
- MySQL数据库的优化–运维架构师必会高薪技能