C 獲取資料庫中RAISERROR丟擲的錯誤並提示

2021-10-02 01:16:54 字數 1114 閱讀 7956

在寫儲存過程時,我們常常會使用raiserror語句來丟擲乙個自定義異常。

如何在.net程式中來捕捉這個異常。framework類庫為我們提供了乙個sqlexception異常型別,該型別是當 sql server 返回警告或錯誤時引發的異常。

乙個儲存過程中可以有多個raiserror語句來丟擲的異常,如何捕捉到具體的哪乙個?

raiserror語句中有乙個引數state,msdn具體定義如下:

0 到 255 之間的整數。 負值或大於 255 的值將生成錯誤。 

如果在多個位置引發相同的使用者定義錯誤,則針對每個位置使用唯一的狀態號有助於找到引發錯誤的**段。

在儲存過程中,我們可以對要特殊處理的異常,對raiserror語句設定乙個不同的state值。在程式中就可以sqlexception異常的procedure屬性(儲存過程名稱)和state屬性 (raiserror語句設定的state引數),來確定具體的異常,然後進行特殊的處理。

**如下:

儲存過程

create proc proc_name           

begin      

--一般的異常,state引數的值為1

if(....)      

begin      

set @errorinfo = '';            

raiserror(@errorinfo, 16, 1) with nowait;              

return;          

end 

--要捕捉特殊處理的異常,可以設定乙個不同的state引數 例如:66

if(....)      

begin      

set @errorinfo = '';            

raiserror(@errorinfo, 16, 66) with nowait;              

return;          

end    

endgo

程式中的處理

trycatch (system.data.sqlclient.sqlexception e)

}catch (exception e)

{

C 獲取資料庫中的Instance

如果我現在要寫個 生成器,連線資料庫,那你得知道有哪些database存在吧,不然咋整?在vs中我們新增乙個ado.net的實體模型 在選擇資料庫名稱的時候就是獲取了資料庫中database instance 執行sql query select from master.sysdatabases c...

C 針對SQLserver資料庫獲取資料

using system using system.collections.generic using system.linq using system.text using system.threading.tasks using system.data using system.data.sql...

js獲取 mysql 屬性 JS中獲取資料庫中的值

在本次專案中,遇到很多問題,經過努力,都逐步得到解決。靜下心來,做乙個記錄,以供以後學習。在專案中遇到乙個問題,需要在js中讀取資料庫中的值,然後再把值返回到頁面中,解決方案如下 使用ajax方法來實現,需要用到ajax.dll 乙個ajax技術開發的幫助類庫 實施過程如下 1 引用ajax.dll...