我遇到了在刷新時插入重複項的問題。我們的團隊決定在sql中使用'if exists'是阻止重複插入的最好方法。但是,如果參數設置爲null會怎麼樣?如果存在使用
string cmdText = " if (not exists(select * from table where field1 = @field1 and field2 = @field2 and field3 = @field3)) Insert into table(field1,field2,field3) Values(@field1,@field2,@field3)";
if (txtfield1.text != "")
cmd.Parameters.Add(new SqlParameter("@field1", txtfield1.text));
else
cmd.Parameters.Add(new SqlParameter("@ field1", DBNull.Value));
cmd.Parameters.Add(new SqlParameter("@field2", txtfield2));
cmd.Parameters.Add(new SqlParameter("@field3", txtfield3));
當field1中存在空值時,這不起作用。
如果你想避免重複,爲什麼不添加一個唯一的鍵約束到你的表? – 2009-11-04 15:35:10
「關於刷新」 - 關於刷新什麼?一個網頁?在源代碼解決問題(請參閱http://stackoverflow.com/questions/481564/how-to-prevent-repeated-postbacks-from-confusing-my-business-layer等) – 2009-11-04 15:40:16
使用表定義和約束對於這些東西。編寫代碼更少,工作速度更快。看到我的答案。 – Egon 2009-11-04 15:47:01