none
ADO.NET 例外處理問題 RRS feed

  • 問題

  • 各位先進大家好
    想請問幾個關於 ADO.NET (沒有使用 DataSet) 存取關聯資料庫 (ACCESS 2007) 例外處理的問題
    1.當資料庫設定串聯更新資料有關連時若刪除資料時會發生例外錯誤應該如何捕捉或處理 ?
    2.該如何設定刪除資料時不刪除整筆資料而在更動的欄位填入 NULL ?

    謝謝


    • 作業系統版本-Windows XP SP3
    • 開發工具版本-Visual Basic 2008
    • 開發環境-Windows Form + FW3.5
    • 資料庫 - Access 2007


    分享是一種美德 ~~~~~
    2010年4月7日 上午 10:24

解答

  • 1.檢查資料表的相依性,依順序去刪

    2.用UPDATE語法

    • 已提議為解答 Lolota Lee 2010年4月8日 上午 03:12
    • 已標示為解答 LeonChen 2010年4月8日 上午 08:11
    • 已取消標示為解答 LeonChen 2010年4月8日 上午 08:14
    • 已取消提議為解答 LeonChen 2010年4月9日 上午 04:04
    • 已標示為解答 LeonChen 2010年4月9日 上午 04:04
    2010年4月7日 上午 10:41
  • ADO.NET 的例外基本上都是以其命名空間中的 Exception 類別來識別,像是 SqlClient 的就是 SqlException,OleDb 的就是 OleDbException,你只要抓這個例外去特別處理即可。

    1. 如果有關聯的話若資料完整性原則允許,可設定成串聯刪除 (Cascading Deletion)。
    2. 不刪除資料要用 UPDATE 將欄位填入 NULL,因為你不是用 SQL Server ... SQL Server 有 Trigger 可以用。


    以下為簽名檔,請勿對號入座:
    初學不是問題,但用不正確的態度來問問題,那就是很大的問題。
    請不要藉新手之名行小白之實,否則只會讓更多無辜的新手得不到幫助而已。
    如果不知道什麼是小白,請參閱:何謂小白
    • 已提議為解答 Lolota Lee 2010年4月8日 上午 03:12
    • 已標示為解答 LeonChen 2010年4月8日 上午 08:11
    • 已取消標示為解答 LeonChen 2010年4月8日 上午 08:14
    • 已標示為解答 LeonChen 2010年4月9日 上午 04:04
    2010年4月7日 上午 10:51
    版主

所有回覆

  • 1.檢查資料表的相依性,依順序去刪

    2.用UPDATE語法

    • 已提議為解答 Lolota Lee 2010年4月8日 上午 03:12
    • 已標示為解答 LeonChen 2010年4月8日 上午 08:11
    • 已取消標示為解答 LeonChen 2010年4月8日 上午 08:14
    • 已取消提議為解答 LeonChen 2010年4月9日 上午 04:04
    • 已標示為解答 LeonChen 2010年4月9日 上午 04:04
    2010年4月7日 上午 10:41
  • ADO.NET 的例外基本上都是以其命名空間中的 Exception 類別來識別,像是 SqlClient 的就是 SqlException,OleDb 的就是 OleDbException,你只要抓這個例外去特別處理即可。

    1. 如果有關聯的話若資料完整性原則允許,可設定成串聯刪除 (Cascading Deletion)。
    2. 不刪除資料要用 UPDATE 將欄位填入 NULL,因為你不是用 SQL Server ... SQL Server 有 Trigger 可以用。


    以下為簽名檔,請勿對號入座:
    初學不是問題,但用不正確的態度來問問題,那就是很大的問題。
    請不要藉新手之名行小白之實,否則只會讓更多無辜的新手得不到幫助而已。
    如果不知道什麼是小白,請參閱:何謂小白
    • 已提議為解答 Lolota Lee 2010年4月8日 上午 03:12
    • 已標示為解答 LeonChen 2010年4月8日 上午 08:11
    • 已取消標示為解答 LeonChen 2010年4月8日 上午 08:14
    • 已標示為解答 LeonChen 2010年4月9日 上午 04:04
    2010年4月7日 上午 10:51
    版主
  • 感謝 阿尼 再請教
    1.檢查資料表的相依性,依順序去刪 --> 是指我自己寫程式依相依性去檢查還是有相關的函式?
    2.用UPDATE語法 --> 是指我自行用 UPDATE 的方式在關連到的欄位填入 NULL
    分享是一種美德 ~~~~~
    2010年4月7日 上午 10:55
  • 感謝 小朱 再請教
    1.OleDbException 我有找過 MSDN 但沒有找到,請問有像 SystemException 的表可以查詢嗎?
    2.因為資料跟帳務有關所以無法作串聯刪除
    3.用 UPDATE 阿尼在上篇有提到了,我知道意思了要自行再寫程式去做填入 NULL 的動作
    4.我再加入 ACCESS 資料來源後,在XXXDateSet.xsd 有看到相關的關聯條件,裡面有填入NULL的動作,請這是要用 DataSet 才有的功能嗎?


    分享是一種美德 ~~~~~
    2010年4月7日 上午 11:02
  • 我都用肉眼判斷......
    假設表A有ForeignKey指向表B的PrimaryKey,那刪除的時候,就得先刪表A,再刪表B

     

    這裡有捕捉例外範例
    http://msdn.microsoft.com/zh-tw/library/system.data.oledb.oledbexception.aspx

     

    XXXDataSet.xsd是工具產生的,要在資料表上填入null可以自己下語法,不一定要透過工具

    2010年4月7日 下午 04:46
  • 怎麼可能會找不到:
    http://msdn.microsoft.com/zh-tw/library/system.data.oledb.oledbexception.aspx
    以下為簽名檔,請勿對號入座:
    初學不是問題,但用不正確的態度來問問題,那就是很大的問題。
    請不要藉新手之名行小白之實,否則只會讓更多無辜的新手得不到幫助而已。
    如果不知道什麼是小白,請參閱:何謂小白
    2010年4月8日 上午 12:46
    版主
  • 你誤會我的意思了 (或者是我說錯了) SORRY
    我要找的是 OleDbException 錯誤的對應碼
    像違反關聯條件是 -2147467259 或 3200
    但是我找不到相關的對應表

    分享是一種美德 ~~~~~
    2010年4月8日 上午 08:09