我很困惑與何時使用ExecuteScalar,ExecuteReader,ExecuteNonQuery?
- 列表項
- 的ExecuteScalar的使用,
- 的ExecuteReader,
- 的ExecuteNonQuery
當使用這些方法?
我很困惑與何時使用ExecuteScalar,ExecuteReader,ExecuteNonQuery?
當使用這些方法?
本質上這是簡化的,但您可以查看每個SQL術語或.net對象或在MSDN上閱讀有關ADO.net的更多信息。
ExecuteScalar
當您調用一個SQL標量函數時,它只返回一個數字。
ExecuteReader
當您正在進行SQL調用時,將從表中返回一個記錄集,這將爲您提供一個SqlDataReader對象來檢索C#中的數據。
ExecuteNonQuery
用於沒有任何類型的SQL服務器返回值時,例如一個簡單的UPDATE語句。
當您的查詢返回單個值時使用ExecuteScalar
。如果它返回更多結果,那麼最終結果是第一行的第一列。一個例子可能是SELECT Count(*) from MyTable
使用ExecuteReader
用於獲取SELECT col1, col2 from MyTable
結果與多個行/列(如設置。
使用ExecuteNonQuery
的,不會從數據庫中檢索結果,但要更新用在現有的數據庫SQL語句(例如, UPDATE, INSERT,
等)。
的ExecuteNonQuery
ExecuteNonQuery方法將返回 INSERT實現的行數,刪除或更新操作。這個ExecuteNonQuery方法將 僅用於插入,更新和刪除,創建以及設置語句。 (Read More about ExecuteNonQuery)
SqlCommand.ExecuteNonQuery MSDN Documentation
的ExecuteReader
,可執行讀取器將被用於返回組行,上 SQL查詢的執行或使用命令對象存儲過程。這是一個 只轉發記錄檢索,它用於從第一個到最後一個值讀取表 值。 (Read More about ExecuteReader)
SqlCommand.ExecuteReader MSDN Documentation
執行標量
執行標量將返回單列單獨列的值,即單 值,對SQL查詢的執行或存儲過程使用命令 對象。從數據庫中檢索單個值非常快。 (Read More about Execute Scalar)
的ExecuteScalar:對於單值
Int32 Value = Convert.ToInt32(ExecuteScalar("SELECT SUM(COLUMNNAME) FROM TABLE"));
Int32 Value = Convert.ToInt32(ExecuteScalar("SELECT AVG(COLUMNNAME) FROM TABLE"));
的ExecuteReader:行正向模式讀取
IdataReader dr = ExecuteReader("SELECT * FROM TABLE");
while(dr.Read())
{
//You will get rows values like this dr["ColumnName"]
}
的ExecuteNonQuery:插入/刪除/更新的行成表
ExecuteNonQuery("DELETE FROM TABLE");
ExecuteNonQuery("UPDATE TABLE SET COLUMNNAME = 'A'");
請正確重新提個問題爲您的標題提供其他一些信息,但你的問題的措辭有所不同。而不是在哪裏使用它應該是何時使用提供MSDN文檔的+1 – dbw