我在一個唯一的列上插入一個插入,系統返回一個錯誤,說我不能插入重複的行。我怎樣才能忽略C#中的這個錯誤?如何忽略SQL錯誤? - C#
編輯 不使用try/catch語句
見this question我爲什麼要忽略錯誤。
我在一個唯一的列上插入一個插入,系統返回一個錯誤,說我不能插入重複的行。我怎樣才能忽略C#中的這個錯誤?如何忽略SQL錯誤? - C#
編輯 不使用try/catch語句
見this question我爲什麼要忽略錯誤。
使用Try/Catch並對catch執行任何操作。
當然這意味着記錄不會被插入,也不會像@recursive提到的那樣解決潛在的問題,但它會忽略錯誤。
如果你想插入一個新行然後擺脫導致這種情況發生的屬性值,如Id字段或其他東西。
編輯
如果它是一個命中次數,那麼你想要做一個更新查詢,我認爲是你來自哪裏。你不想做一個檢查,然後插入/更新權利?
我想你可能會更好使用數據存儲庫並將對象保留在內存中。如果有一個id分配給對象,那麼你在計數器上進行更新,如果沒有,那麼插入一個,然後你將ID存儲在對象中。
Google Analytics(分析)可以檢查頁面上的點擊次數? Lot很容易,大多數免費且幾乎沒有代碼。那是可行的嗎?
是否有可能沒有try/catch?我的代碼的這個區域會被執行幾次 – Luke101 2009-10-28 03:16:56
如果你想忽略它,抓SQLEXCEPTION把它吞了......
try
{
// code that calls the database insert
}
catch(SqlException) { /* swallow */ }
如果你可以切換到使用一個存儲過程,然後簡單地窩插入一個條件塊,檢查裏面對於受騙者第一...
If Not Exists (Select * From Table
Where PK = @PkValue)
Insert Table (ColNames here)
Values(input parameters here, including PKvalue)
錯字中的catch – 2009-10-28 03:15:10
什麼?沒有SqException?謝謝!修正它... – 2009-10-28 13:05:29
是否有可能沒有嘗試/趕上?我的代碼的這個區域將被執行多次 – Luke101 2009-10-28 15:42:54
用途:
try {
...sql statement execution...
} catch (SqlException ex) {
..do stuff here...
}
是否有可能沒有try/catch?我的代碼的這個區域將被執行多次 – Luke101 2009-10-28 15:41:46
實在沒有辦法瓦特/出做一個初始選擇或嘗試捕獲...
如果您使用支持存儲過程的數據庫,則可以通過在存儲過程中執行select操作,然後僅在存在沒有記錄。
還有一篇關於您鏈接到的文章的建議,值得一試,您可以使用where子句編寫插入內容。我不確定語法是否正確,但可能值得一試。
Insert TableName ([column list])
Select Distinct @PK, @valueA, @ValueB, etc. -- list all values to be inserted
From TableName
Where Not Exists
(Select * From TableName
Where PK == @PK)
以如下方式使用存儲過程。請注意,error_number()
來自定義的錯誤 - 當它插入具有唯一鍵的副本或PK約束時。谷歌如果你想了解更多關於具體號碼的細節
BEGIN TRY
insert into table values(x,y,x)
END TRY
BEGIN CATCH
IF ERROR_NUMBER() = 2627 OR ERROR_NUMBER() = 2601
-- this is a duplicate so just do nothing
ELSE
RAISERROR ('Error with Insert', -- Message text.
16, -- Severity.
1 -- State.
);
END CATCH
你爲什麼要忽略它?你最好不要插入重複的行。 – recursive 2009-10-28 03:10:40
我正在實現每個文章ID都有唯一IP的點擊數數據庫。我試圖避免提出兩個疑問。這就是爲什麼我想忽略這些錯誤。 – Luke101 2009-10-28 03:16:12
SQL Server是否支持INSERT ... ON DUPLICATE KEY UPDATE樣式語法?這聽起來像你所需要的。 – 2009-10-28 03:23:24