浙江福彩3d走势图
我們來自五湖四海,不為別的,只因有共同的愛好,為中國互聯網發展出一分力!

sqlite中文路徑非常規解決方案

2012年01月18日16:50 閱讀: 23486 次

標簽: SQLite, 中文路徑

前段時間做了個軟件,用.net做的,用戶和軟件的一些配置內容用sqlite3來存儲.

于是把sqlite3編譯成dll并在C#/CLR里調用.

測試了下,發現sqlite3不支持中文路徑,有些帶空格的路徑(Program Files,Document and settings等),打開數據庫會出錯.

查了下文檔,好像編碼的問題(UTF-8,UTF-16等),因為這方面內容比較多,沒有細看,所以想了一些非常規的解決方法

 先看常見的打開數據庫


/*相對路徑方法:打開當前目錄下的test.sb,如果不存在這個db則創建*/
sqlite3* db;
int rc = sqlite3_open("test.db",&db);
/*絕對路徑方法:比如打開C盤下的test.sb,如果不存在這個db則創建*/
sqlite3* db;
int rc = sqlite3_open("C:\\test.db",&db);
/*會出現問題的方式:比如打開C:\Program Files目錄下的test.sb,如果不存在這個db則創建*/
sqlite3* db;
int rc = sqlite3_open("C:\\Program Files\\test.db",&db);

/*會出現問題的方式1:比如打開C:\實驗文件夾\目錄下的test.sb,如果不存在這個db則創建*/
sqlite3* db;
int rc = sqlite3_open("C:\\實驗文件夾\\test.db",&db);


為了打開上面2個目錄下的test.db


可以把系統的當前路徑設置為"C:\\Program Files\\"或"C:\\實驗文件夾\\",然后再用相對路徑方式打開:


int rc = sqlite3_open("test.db",&db)


即可,VC++.net代碼:

/*修改當前路徑*/
System::Environment::CurrentDirectory = "C:\\實驗文件夾" ;   
/*打開數據庫*/
int rc = sqlite3_open("test.db",&db);

要說的是,設置好當前路徑并打開完后,最好把當前路徑改回成常用的路徑:比如桌面,我的文檔等.


因為"C:\\實驗文件夾"被設置成當前路徑后在程序中就不能刪除,刪除會提示文件夾正在被另一個進程使用.

分享到: 更多
藍客門戶
©2001-2019 中國藍客聯盟 版權所有.
關于藍客聯盟歷史宗旨章程技術服務聯系我們藍客社區

浙江福彩3d走势图 切尔西欧冠 汉诺威96对沙尔克04 巨人财富官网 qq彩票新11选5 皇家社会赫塔菲 巴列卡诺莱万特 qq飞车ssc 河南11选5开奖号码是多少 捷豹的传说登陆 江苏体育彩票走势图