如何知道sql update語句是否成功執行或失敗?如何知道sql update語句是否成功執行或失敗?
我使用sql server 2005和C#asp.net。
我可以在C#中獲得成功或失敗的信息,而無需在舊的sql語句中添加一些sql代碼?
如何知道sql update語句是否成功執行或失敗?如何知道sql update語句是否成功執行或失敗?
我使用sql server 2005和C#asp.net。
我可以在C#中獲得成功或失敗的信息,而無需在舊的sql語句中添加一些sql代碼?
您可以使用ExecuteNonQuery的返回值來檢查更新是否成功。
SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString);
SqlCommand cmd = new SqlCommand("sp_updateData", con);
cmd.CommandType = CommandType.StoredProcedure;
SqlParameter p1 = new SqlParameter("@id", SqlDbType.Int);
p1.Value = 1;
p1.Direction = ParameterDirection.Input;
SqlParameter p2 = new SqlParameter("@name", SqlDbType.VarChar,50);
p2.Value = "sls";
p2.Direction = ParameterDirection.Input;
cmd.Parameters.Add(p1);
cmd.Parameters.Add(p2);
try
{
con.Open();
//count will be the number of rows updated. will be zero if no rows updated.
int count = cmd.ExecuteNonQuery();
if (count > 0)
{
Console.WriteLine("Update Success!!!");
}
else
{
Console.WriteLine("No Updates!!!");
}
Console.ReadLine();
}
catch (SqlException ex)
{
Console.WriteLine("Update Failed coz.. " + ex.Message);
}
finally
{
con.Close();
}
使用TRY/CATCH塊並可能RAISERROR發送消息。
您可以使用@@ROWCOUNT獲取受上一查詢的行數。例如,這可以用來決定你的WHERE
子句是否實際匹配了某些東西。
UPDATE mytable SET
field = 'SomeValue'
WHERE
id = 1234
IF @@ROWCOUNT = 0
BEGIN
-- No row with id=1234
END
'失敗'是什麼意思?
如果失敗,則表示生成錯誤 - SQL語法,約束或FK違例 - 然後TRY/CATCH,RAISEERROR等是選項。
或者,如果失敗,則意味着沒有行被更新,則ExecuteNonQuery的返回值將爲您提供行計數,如果您不在存儲過程中抑制rowcount。
在管理工作室?使用C#,Delphi,...? – 2010-06-03 06:22:13
你能更具體嗎?你在哪裏執行更新?它是一個應用程序或只是管理工作室或什麼?如果它是一個應用程序,比什麼樣的?你用什麼語言? 但一般來說,如果失敗,你會得到一個錯誤,所以你應該有錯誤處理程序:) – hgulyan 2010-06-03 06:22:46