sqlite学习笔记之sqlite3 open函数的使用

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

               

作者:朱金灿

来源: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 = 0char* 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:中文路径的支持

           

给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow
这里写图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值