tôi đã mệt mỏi viết đoạn mã sau:Làm thế nào để parameterize một chuỗi null với DBNull.Value rõ ràng và nhanh chóng
/* Commenting out irrelevant parts
public string MiddleName;
public void Save(){
SqlCommand = new SqlCommand();
// blah blah...boring INSERT statement with params etc go here. */
if(MiddleName==null){
myCmd.Parameters.Add("@MiddleName", DBNull.Value);
}
else{
myCmd.Parameters.Add("@MiddleName", MiddleName);
}
/*
// more boring code to save to DB.
}*/
Vì vậy, tôi đã viết này:
public static object DBNullValueorStringIfNotNull(string value)
{
object o;
if (value == null)
{
o = DBNull.Value;
}
else
{
o = value;
}
return o;
}
// which would be called like:
myCmd.Parameters.Add("@MiddleName", DBNullValueorStringIfNotNull(MiddleName));
Nếu đây là một cách tốt để đi về việc này sau đó những gì bạn sẽ đề nghị như là tên phương pháp? DBNullValueorStringIfNotNull hơi tiết và khó hiểu.
Tôi cũng sẵn sàng giải quyết vấn đề này hoàn toàn. Tôi muốn làm điều này:
myCmd.Parameters.Add("@MiddleName", MiddleName==null ? DBNull.Value : MiddleName);
nhưng điều đó sẽ không hoạt động vì "Nhà điều hành"? ' không thể áp dụng cho các toán hạng kiểu 'string và' System.DBNull '".
Tôi đã có C# 3.5 và SQL Server 2005 theo ý của mình nếu có vấn đề.
tôi sẽ không viết các trường hợp null ở tất cả - nếu giá trị là null, bỏ qua từ báo cáo kết quả chèn. –
nhưng điều đó sẽ không hoạt động. - hãy cụ thể, tại sao mọi người nên đoán? – Andrey
@Andrey: tuyên bố của ông sẽ không biên dịch (trình biên dịch sẽ nói rằng không có chuyển đổi ngầm giữa 'DBNull' và' string'). –