2014-04-04 47 views
0

我正在使用MySQL-Connector/Net。如果另一個成功,執行命令?

我該如何保證Command已經被執行。 它是否像這樣工作或不這樣工作?

我想命令裏面的if只是被執行,如果第一個命令 成功了,因爲第二個命令正在更新Stats。

我需要一個sqlcommand和sql_adapter更新和填充命令。

if (sql_command.ExecuteNonQuery() != 0) 
{ 
    sql_command2.ExecuteNonQuery(); 
} 

if (sql_adapter.Fill(dataSet, "Entry") != 0) 
{ 
    sql_command2.ExecuteNonQuery(); 
} 
+0

第一種方式是正確的方法。如果不成功,ExecuteNonQuery將返回-1。 – Relax

+0

@放鬆我不認爲這是正確的。 'ExecuteNonQuery'返回受影響的行數。它將返回0,如果沒有,或者如果查詢錯誤,它會拋出異常。 – CodingIntrigue

+0

@RGraham請參閱:http://msdn.microsoft.com/de-de/library/system.data.sqlclient.sqlcommand.executenonquery%28v=vs.110%29.aspx Quote:「For UPDATE,INSERT,and DELETE語句中,返回值是受命令影響的行數,當插入或更新的表上存在觸發器時,返回值包括受插入或更新操作以及受影響的行數影響的行數對於所有其他類型的語句,返回值是-1,如果發生回滾,返回值也是-1。 – Relax

回答

1

使用以下:

if (sql_command.ExecuteNonQuery() > 0) 
{ 
    sql_command2.ExecuteNonQuery(); 
} 

爲ExecuteNonQuery返回受影響的記錄數。 (由命令本身和任何相關的觸發器)

如果你成功的Command定義是some記錄得到更新,讓您運行命令2用於更新統計數據,上面的代碼就足夠了。

如果你成功的Command定義它運行**without**任何錯誤(不考慮更新的記錄)使用此:

sql_command.ExecuteNonQuery(); 
sql_command2.ExecuteNonQuery(); 

這是因爲,爲ExecuteNonQuery將返回0,如果沒有記錄受到影響,還可以在查詢/存儲過程中包含**SET NOCOUNT ON**時,在某些成功執行時返回-1。 (-1,也返回上回滾等)

+0

它是否也適用於sql_adapter填充和更新命令? – Proton

相關問題