在寫儲存過程時,我們常常會使用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...