Có sự khác biệt nào giữa null và System.DBNull.Value không? Nếu có, nó là cái gì?
Tôi nhận thấy hành vi này bây giờ -
while (rdr.Read())
{
if (rdr["Id"] != null) //if (rdr["Id"] != System.DBNull.Value)
{
int x = Convert.ToInt32(rdr["Id"]);
}
}
Trong khi tôi truy xuất dữ liệu từ cơ sở dữ liệu bằng cách sử dụng bộ dữ liệu sql, mặc dù không có giá trị nào được trả if(rdr["Id"] != null)về truevà cuối cùng đã ném ra một ngoại lệ để truyền null thành số nguyên.
Nhưng, điều này nếu tôi sử dụng if (rdr["Id"] != System.DBNull.Value)lợi nhuận false.
Sự khác biệt giữa null và System.DBNull.Value là gì?
null.
System.Datavà một là giá trị đặc biệt biểu thị sự thiếu tham chiếu. Họ không có gì để làm với nhau. Bạn có thể nói rõ hơn về những gì bạn đang bối rối không? Câu hỏi thực sự của bạn là "tại sao phải làmDataRowsvàDataReadersđặtDBNull.Valuebên trong của chúng thay vìnull?"