1. 程式人生 > >ExecuteNonQuery()返回受影響行數不適用select語句

ExecuteNonQuery()返回受影響行數不適用select語句

返回 archive url ref use .cn nbsp 類型 cnblogs

ExecuteNonQuery()返回受影響行數不適用select語句

SqlCommand.ExecuteNonQuery 方法對連接執行 Transact-SQL 語句並返回受影響的行數。

對於 UPDATE、INSERT 和 DELETE 語句,返回值為該命令所影響的行數。對於所有其他類型的語句,返回值為 -1。如果發生回滾,返回值也為 -1

所以在查詢表中是否有(某條)數據的時候,一定不能用select sql語句+ cmd.ExecuteNonQuery(),通過判斷返回值是否大於0來判斷。

解決方案:
1.

SqlCeCommand.ExecuteScalar 方法 ( + 聚合查詢)

執行查詢,並返回查詢所返回的結果集中第一行的第一列。忽略額外的列或行。 例如一個聚合值。

cmd.CommandText = "select count(*) from users where id = 10000;" 例如一個聚合值。

int count = (int)cmd.ExecuteScalar() ;

2. 用ExcuteReader()方法返回一個reader

if(reader.Read() == false) { ...}

ExecuteNonQuery()返回受影響行數不適用select語句