sqlite學(xué)習(xí)筆記之sqlite3_open函數(shù)的使用
//?編譯環(huán)境:VS?2008+sp1,Win7,?工程設(shè)置為多字節(jié)字符集
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;
}測試代碼如下:
//?編譯環(huán)境:VS?2008+sp1,Win7,?工程設(shè)置為多字節(jié)字符集
#include#includeint?main(void)
{
sqlite3*?db?=?0;
char*?pszErrMsg?=?NULL;
//?連接數(shù)據(jù)庫
????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,?"無法打開數(shù)據(jù)庫:?%s",?sqlite3_errmsg(db));
return?1;
}
??return?0;
}參考文獻:
1. sqlite3問題2:中文路徑的支持





