昨天在wince6.0下編譯sqlite3.7.14生成了dll和lib,並拷貝到wince設備相應的目錄下進行測試。
(如果編譯3.7.14庫文件的話參考:http://blog.csdn.net/feihu521a/article/details/8129612)
今天測試的時候總提示:no such table.....,google一下才明白,因爲sqlite打開文件時沒有的話會自己創建一個同名文件,而新建的當然沒有table了。這個是由於wince下沒有相對路徑只有絕對路勁引起的,也就是沒有哦找到對應的.db文件。WinCE提供了GetModuleFileName系統API來獲取可執行程序的完整路徑與文件名。
函數原型:
DWORD GetModuleFileName(
HMODULE hModule, // 將要得到的模塊的句柄。如果是當前模塊,NULL
LPTSTR lpFilename, // 得到的文件名
DWORD nSize // 一般MAX_PATH就可以了
);
經過測試://獲取當前文件的絕對路徑
void GetCurrentDirectory(CString &strPath)
{
wchar_t pBuf[256];
GetModuleFileName(NULL,pBuf,MAX_PATH);
strPath=pBuf;
strPath = strPath.Left(strPath.ReverseFind('\\') + 1);
}