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ề true
và 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.Data
và 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àmDataRows
vàDataReaders
đặtDBNull.Value
bên trong của chúng thay vìnull
?"