當查詢成功時,SQL Server Express會返回代碼嗎?你怎麼能在C#中捕獲這個?SQL成功查詢代碼
謝謝
我有一個按鈕,讓我從一個表中的下10行。我想根據以前的查詢是否成功來繼續使用此按鈕。
當查詢成功時,SQL Server Express會返回代碼嗎?你怎麼能在C#中捕獲這個?SQL成功查詢代碼
謝謝
我有一個按鈕,讓我從一個表中的下10行。我想根據以前的查詢是否成功來繼續使用此按鈕。
值得注意的是,如果查詢失敗,你將會得到一個異常,所以什麼都不會返回,除非你發現異常,那麼你可以讓它返回任何你喜歡的東西!
我想,也許你所想的ExecuteNonQuery這對於INSERT/UPDATE/DELETE
命令將返回受影響的行數(在命令所有語句),或返回-1,如果事務回滾。它不會返回受select語句影響的行數,但這不應該成爲問題,因爲沒有理由使用ExecuteNonQuery
來表示SELECT
語句。
如果你只是想要的結果的計數返回您可以結合使用COUNT
查詢與ExecuteScalar。
如果您正在使用SqlDataReader您可以使用HasRows物業,如果它返回行一個布爾值,或者當你正在使用的閱讀器,你可以使用一個計數器返回行的確切數目,例如:
int rowcount = 0;
bool success = false;
using (var connection = new SqlConnection("connectionString"))
using (var command = new SqlCommand("SELECT TOP 10 * FROM Table"))
{
connection.Open();
using (var reader = command.ExecuteReader())
{
success = reader.HasRows;
while (reader.Read())
{
rowcount++;
// DO SOMETHING WITH YOUR DATA
}
}
}
或者,如果你正在使用的SqlDataAdapter可以使用的行數從DataTable獲得成功或任一個布爾值受影響的行數。
using (var adapter = new SqlDataAdapter("SELECT TOP 10 * FROM Table", "connectionString"))
{
DataTable table = new DataTable();
adapter.Fill(table);
bool success = table.Rows.Count > 0;
int rows = table.Rows.Count;
}
謝謝GarethD。我會拿你的答案,並將其應用於我的代碼。我被告知基於Oracle的數據庫返回一個特定的值,所以我不確定MS SQL Server Express是否做了類似的事情。謝謝各位的意見。 – 2013-04-26 14:40:49
不知道如何生成查詢很難告訴你如何做到這一點,但如果你使用SQLDataReader你可以檢查它的HasRows屬性,或者如果你使用的是DataTable,你可以檢查它的行.Count屬性。
我使用連接,命令,然後適配器來填充數據表。我以爲SQL服務器在查詢完成時會返回一個int值,如果是失敗,則返回-1 ... – 2013-04-26 02:04:02
如果它有行,它將返回行。如果沒有,它不會。爲什麼它需要一個返回碼? – Amy 2013-04-26 02:16:14
如果查詢成功執行,我被告知Oracle數據庫返回值爲100;如果不成功則返回-1,SQL表達式做類似的事情嗎? – 2013-04-26 02:52:10
顯示代碼,然後我們可以看到。否則它將被關閉 – 2013-04-26 02:30:01
成功,因爲'返回行'或成功,因爲'不會引發錯誤' – 2013-04-26 09:18:03