C#.Net開發基於Oracle資料庫系統常見異常處理

來源:互聯網
上載者:User

注意:先用單步調試,找出出錯程式語句
<1>未註冊XXX動態連結程式庫
(未註冊動態連結程式庫檔案或者該方法所在的類庫不存在)

<2>未將對象設定引用到對象執行個體 
(沒有給對象正確賦值,可檢查參數值,引用了未初始化的變數)

<3> “myDelegate”是不明確的引用 
(同等層級的名字空間節點上出現同名委託)

<4>不支援並行的事務
 (新事務未提交或者事務執行不完整,注意,如果提交事務之前存在return語句,那麼必須將事務提交放在return之前執行)

<5>ORA: 找不到預期的FROM關鍵字
(SQL語句中關鍵字衝突)
(From前面字元未保留空格)

<6>字串格式不匹配
 (Oracle中整數型別參數應用程式中可用字串代替,但Varchar型別參數在應用程式中必須對應為字串類型)
(參數轉換不正確,參數類型與資料表種欄位類型不符)

<7>缺少運算式/未找到預期的關鍵字FROM
(SQL語句錯誤)
(可用快速監視的方法查看變數的執行情況)
(Oracle中不能用AS關鍵字給表別名,可去掉AS)
(轉換錯誤,例如char應為to_char,詳情請參閱相關Oracle技術資料)

<7>SQL命令未正確結束
(缺少括弧或其他標示符)

<8>CURRENT TIMESTAMP
(1)改為:CURRENT_TIMESTAMP,即可
(2)表別名只需: select * from tableName A 即可,不能寫成: select * from tablename AS A
(3)to_char(char),   to_number(int), to_date(date)

<9>dual 代替 IDM DB2中的SYSIBM.SYSDUMMY1, 用to_date代替timestamp
        為組合框指定資料來源的時候,要把資料來源放在前面,例如 cmb.DataSource = datasource; cmb.DisplayNumber = ...
<10>調用預存程序時出錯,參數個數或者類型錯誤
(檢查參數名稱、值、類型、長度、傳出方向是否和預存程序參數一致,須仔細檢查,不然可能一處出錯,全盤皆錯。鄙人曾經碰到過一次,36個參數要傳入預存程序,只因為一個參數名出錯,結果系統老提示以上異常 。

<11>執行預存程序中,插入的列過大!
(參數長度太小,或者被引用的字串沒有去掉空格)
<12>給CURRENT_TIMESTAMP 加上N個小時
select CURRENT_TIMESTAMP + N/24 from dual

<12>給組合框指定資料來源,所有屬性都正常,但是就是無法正常顯示!

 詳見:一個罕見C#異常的解決過程                                                                                                                                                   
<13>缺乏應有的引用和程式集,奇怪,我明明添加了呀?
(1)系統內部錯誤,關掉開發環境,重啟動即可!
(2)引用名發生大小寫錯誤!

<14>"Control"是不明確的引用
(1)在系統感知的名字空間下,出現名字相同的類。比如:System.Windows.Forms.TextBox, MyTest.TextBox
(2)詳細指定名字空間全稱即可,不能以TextBox引用,因為系統不知道你要引用的是哪個TextBox

<15>日期格式圖片在轉換整個輸入字串之前結束
(1)這通常因為程式中的諸如此類的語句:cast(djrq as char(10))||'' ''||cast(djsj as char(10))
(2)應改為: to_date(to_char(djrq,'yyyy-mm-dd')||' '||to_char(djsj,'hh24:mi:ss'),'yyyy-mm-dd hh24:mi:ss')

<16>無法處理的服務名
(1)這通常是因為連接字串錯誤,或者應用程式所在的檔案夾名稱錯誤,導致無法登入Oracle伺服器。
       例如如果檔案夾命名為aaa(dd)等諸如此類含有非字母和數字組合的名稱就會因發此異常,特別注意。

<17>OCI:20053 溢出錯誤
(1)這通常是因為數實值型別的小數位太長,導致Adapter的Fill()方法拋出異常。解決辦法是使用Round函數,限制其小數位長度,例如Round(1/6, 3),把小數位長度限制在3位。

<18>數值超出了範圍
(1)這通常出現在資料轉換中,轉換設定的長度小於數值本身的長度,導致Adapter的Fill()方法拋出異常。解決辦法是,例如轉換字串,可寫為Cast( Variable as Varchar( 100 ) ),把設定的長度儘可能的超過原變數長度。

<19>Oracle服務不可用,提示: Oracle Unavailable. shared memory realm does not exist
(1)開啟SQL Plus Worksheet,以資料庫管理員身份登入(connect sys/x#$yh&#@o$radb as sysdba),輸入startup,執行,一切OK!(2007-3-6

<20>不能執行更新語句,提示: 無任何提示,程式彷彿死了一般(未拋出異常)
(1)這通常是因為你在P/LSQL上對該表執行了更新但是未提交,導致你在程式之外鎖定了該表,因此在程式內對該表執行更新時將無限時等待。解決辦法是關閉P/LSQL,解除鎖定。(2007-3-12

<21>水晶報表提示:無效報表源

(1)這通常是因為你在的引用出了差錯,即臭名昭著的“Dll Hell”問題。將水晶報表不同版本的DLL混在一起引用,造成水晶報表無法識別的錯誤。 解決辦法:統一引用檔案的版本。 (2007-4-19

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.