มีความแตกต่างระหว่าง null และ System.DBNull.Value หรือไม่ ถ้าใช่มันคืออะไร?
ฉันสังเกตเห็นพฤติกรรมนี้แล้ว -
while (rdr.Read())
{
if (rdr["Id"] != null) //if (rdr["Id"] != System.DBNull.Value)
{
int x = Convert.ToInt32(rdr["Id"]);
}
}
ในขณะที่ฉันดึงข้อมูลจากฐานข้อมูลโดยใช้ sql datareader แม้ว่าจะไม่มีค่าที่ส่งif(rdr["Id"] != null)
คืนกลับมาtrue
และในที่สุดก็มีข้อยกเว้นสำหรับการแคสต์ null เป็นจำนวนเต็ม
แต่นี้ถ้าผมใช้ผลตอบแทนif (rdr["Id"] != System.DBNull.Value)
false
ความแตกต่างระหว่าง null และ System.DBNull.Value คืออะไร?
System.Data
และอีกค่าหนึ่งเป็นค่าพิเศษที่บ่งบอกถึงการขาดการอ้างอิง พวกเขาไม่มีอะไรเกี่ยวข้องกัน คุณสามารถอธิบายสิ่งที่คุณสับสนอย่างละเอียดได้หรือไม่? คำถามที่แท้จริงของคุณคือ "ทำไมต้องทำDataRows
และDataReaders
ใส่ไว้DBNull.Value
ในตัวเองแทนnull
?