前幾天給程序加上了SQLite3數據庫的支持,可是發現當把數據庫文件放到有中文的目錄下時就出問題了!
我前一陣寫過SQLite我選擇我喜歡中介紹過,默認的接口的編碼方式是UTF8,所以問題就在這裡!
下面是我寫的code,該文章版權歸本人所有,代碼大家可以隨意使用!
char szFileNameUtf8[MAX_PATH*4];
_bstr_t bstrFileName = strPath;
if(HasChineseChar(strPath))
{
AtlUnicodeToUTF8(bstrFileName,bstrFileName.length(),szFileNameUtf8,sizeof(szFileNameUtf8));
result = sqlite3_open(szFileNameUtf8, &m_sqlite3DB);
}
else
{
result = sqlite3_open(strPath, &m_sqlite3DB);
}
if (result == SQLITE_OK)
{
char *errmsg = NULL;
int nError = sqlite3_exec( m_sqlite3DB, "create table Table_a( ID integer primary key autoincrement, name nvarchar(32) )", NULL, NULL, &errmsg );
if(nError != SQLITE_OK)
{
//這裡不需要log.
ATLTRACE( "創建表失敗,錯誤碼:%d,錯誤原因:%s\n", result, errmsg );
}
//else cont.
}