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; }
參考文獻(xiàn):
1. sqlite3問題2:中文路徑的支持