當前位置:萬佳範文網 >

工作總結 >工作總結精選 >

問題分析小結

問題分析小結

在應用mfc odbc類進行數據庫應用的開發的過程中遇到了好多問題,曾搞得我焦頭爛額^_^,項目開發完成後,對開發過程中關於odbc報錯問題解決方法做個小結。

問題分析小結

報錯一: “不支持動態記錄集”

問題分析:使用cdatabase類的open()成員函數時,最後一個參數默認是加載動態遊標庫。因此,出現“不支持動態記錄集”的錯誤,就是由此而來。

我遇到的例子a:使用open(默認dynaset)時,當訪問時間之類的字段時會出現"不支持動態記錄集",此時需改為snapshot)

ctime m_tmborrow;

if(this->isopen())

{

this->close();

}

this->open(crecordset::snapshot,_t("select * from tbborrow where readerid = '"+readerid+"'"));

m_tmborrow = this->m_borrowtime;

。。。。。。

報錯二:“檢索記錄出錯”

問題分析:在用vc的類嚮導新建一個基類為crecordset的數據集類時要注意類嚮導在綁定字段時使用的成員類量的數據類型是否與你的數據庫字段類型一至。因為發現類嚮導並不是根據字段本身的數據類型來定義綁定變量的數據類型的。常常會把一個數據庫常用的id或編號一類字段按long型處理,而實際上這樣的字段往往是字符型的。在此時不會有錯誤發生,錯誤只會在你執行sql查詢時跳出來。 執行sql查詢時,如果出現“非法描述器索引”和“檢索記錄出錯”這兩個錯誤,那多半就是因為數據庫字段與綁定變量的數據類型不相符導至的。前者一般靜態數據集(snapshot)引起,而後者一般由動態數據集(dynaset)引起。

我遇到的例子b:修改accesse數據庫字段名稱(該字段數據類型為日期/時間或者文本類型,其中文本類型的掩碼修改為日期/時間格式),在vc的crecordset派生類中重新綁定數據庫表,導致運行程序時報告“檢索記錄出錯”。解決辦法則是很簡單,把crecordset的派生類從工程中刪除掉,然後再重建一個同樣的crecordset的派生類問題就解決了(不要問我原因,我也搞不清)。

報錯三:“非法描述器索引”

問題分析:同上

我遇到的例子c:每一個數據庫裏面難免要有幾個表,需要對每個表進行添加記錄操作(把數據庫裏的所有表都添加到crecordset的派生類中,並且每個表的字段都綁定相應的變量)。結果每次添加記錄時都會有“非法描述器索引”出現,解決方法,每個表都用一個crecordset的派生類來操作,ok搞定了!

報錯四:“參數不足,期待是1”

問題分析:這個問題通常是sql語句錯誤造成的,通常是sql語句中的字段數據類型不匹配,或者字段數據個數不匹配造成的,例如:執行insert into table(name,password) values("aa") 就會造成參數不足。

報錯五:“記錄集是隻讀”

問題分析:這個問題通常是因為沒打開要操作的表,但也可能是操作表的字段設置不合理。

標籤: 小結
  • 文章版權屬於文章作者所有,轉載請註明 https://wjfww.com/zongjie/jingxuan/ppng3.html
專題