只需單一標量值(如 SELECT MAX(Id) FROM Table),不需 DataSet/DataReader 開銷。
string sql = "SELECT MAX(Id) FROM MyTable";
using (SqlConnection conn = new SqlConnection(connStr)) {
using (SqlCommand cmd = new SqlCommand(sql, conn)) {
conn.Open();
object result = cmd.ExecuteScalar(); // 回傳 object (可能為 DBNull.Value)
int maxId = (result == DBNull.Value) ? 0 : Convert.ToInt32(result);
Console.WriteLine("Max Id = " + maxId);
}
}
ExecuteScalar 執行查詢並回傳**第一行第一列**的值,完美適配聚合函數。object,**必須判斷 DBNull.Value** 再轉型,否則拋 InvalidCastException。cmd.Parameters.AddWithValue("@cond", val)。var maxId = await context.MyTable.MaxAsync(t => (int?)t.Id) ?? 0;