MFC使用SQLite 學習系列 一: SQLITE_MISUSE錯誤


一 為什么要選擇SQLite                                                                              

由於使用文本文件來記錄測試數據,速度越來越慢的問題,經過園友推薦,使用了SQLite來進行數據的存儲,再次感謝園友@LightSmaile

關於這個問題,可以參考一下上一篇隨筆中的介紹,為何要更換用數據庫來存儲數據。鏈接地址:http://www.cnblogs.com/fredliu/p/6692986.html

 

二 選擇SQLite使用方法                                                                              

當然SQLite的使用方法有很多,網上也有很多的介紹,經過篩選,我選擇了使用一個封裝好的MFC類,來使用SQL。

為什么要選擇這個方案呢,因為我比較懶,既然有前輩做好了封裝類,那直接拿過來用就好了。但是不能只做伸手黨,在此介紹給園友。

CodeProject上的SQLite3Wrapper封裝(http://www.codeproject.com/KB/windows/SQLite3Wrapper.aspx)

具體的使用方法,園友們可以參考一下這位朋友的介紹,使用比較簡單:http://blog.csdn.net/akof1314/article/details/5937103

 

三 使用中遇到的問題一                                                                              

環境上都搭好了,那么就開始使用了,使用中遇到的第一個問題,那就是一個錯誤提示 “SQLITE_MISUSE”

唉,好不容易引入SQLite,也寫了不少代碼,替換原來的方案了,一運行,啪,彈出來這一個錯誤,大晚上的搞的心情的不好了。心里還想着,趕緊把SQLite替換好原來的方案,搞完去Dota兩盤呢,結果出師不利。

查看這個錯誤的解釋

#define SQLITE_MISUSE      21   /* Library used incorrectly */

庫使用不當,可我是按照事例中的方法去做的啊。

經過百度,大概了解,可能其中寫的語句中有不符合規范的。

於是進過查找,找到其中多了一個“)”括號,我的天,把事例代碼拷過來,增加數據后,位置不對。

fTest = gloableConfig.sqlite.DirectStatement("CREATE TABLE mainData(name varchar(50), count varchar(10)),LAvg varchar(10),LMax varchar(10),LMin varchar(10))");

啊哈哈,居然犯了這樣的錯誤。

 

四 使用中遇到的問題二                                                                                      

這個問題解決了,然后繼續跑,結果,嘎嘣,又跳出來這個錯誤。

我的天,這一次又是啥原因。

經過調試,找到錯誤代碼行。

szQuery.Format("CREATE TABLE %s(index_Num varchar(10),L_L varchar(10),xSe varchar(10),ySe varchar(10),Tc varchar(10),uSe varchar(10),vSe varchar(10),X_S varchar(10),Y_S varchar(10),Z_S varchar(10))",strTemp);

這下仔細檢查了了括號,也沒問題,那么問題可能出在這個strTemp上。

查看strTemp的賦值

strTemp.Format("--%02d:%02d:%02d:%04d",time.wHour,time.wMinute,time.wSecond,nCeshixuhao);
    strTemp = strProXinghao + "--" + strTemplateName + strTemp;

心想是不是創建的表名里面不能有特殊的字符。

於是先把里面的“:”換成“_”,運行依然報同樣的錯誤。

接着把“--”換成“_”,再運行下,OK了,不報錯了。

原來是這個樣字。

    strTemp.Format("_%02d_%02d_%02d_%04d",time.wHour,time.wMinute,time.wSecond,nCeshixuhao);
    strTemp = strProXinghao + "_" + strTemplateName + strTemp;

至此 SQLite3Wrapper的基本使用已經沒問題了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM