調用 ExecuteDataTable(sql, paramArray) 時編譯器找不到匹配的兩參數重載。
public static DataTable ExecuteDataTable(string sql, params SqlParameter[] parameters) {
using (var conn = new SqlConnection(connStr))
using (var cmd = conn.CreateCommand()) {
cmd.CommandText = sql;
if (parameters != null && parameters.Length > 0) {
cmd.Parameters.AddRange(parameters);
}
using (var adapter = new SqlDataAdapter(cmd)) {
var dt = new DataTable();
adapter.Fill(dt);
return dt;
}
}
}
// 無參數
var dt1 = SqlHelper.ExecuteDataTable("SELECT * FROM Users");
// 參數化
var dt2 = SqlHelper.ExecuteDataTable(
"SELECT * FROM Users WHERE Role = @Role AND Status = @Status",
new SqlParameter("@Role", "Admin"),
new SqlParameter("@Status", 1)
);
// 從列表構建
var list = new List { ... };
var dt3 = SqlHelper.ExecuteDataTable(sql, list.ToArray());
public static DataTable ExecuteDataTable(string sql, Dictionary dict) {
var params = dict.Select(kvp => new SqlParameter(kvp.Key, kvp.Value ?? DBNull.Value)).ToArray();
return ExecuteDataTable(sql, params);
}