คำถามติดแท็ก dbnull

18
กำหนดค่า null ให้กับ SqlParameter
รหัสต่อไปนี้ให้ข้อผิดพลาด - "ไม่มีการแปลงโดยนัยจาก DBnull เป็น int" SqlParameter[] parameters = new SqlParameter[1]; SqlParameter planIndexParameter = new SqlParameter("@AgeIndex", SqlDbType.Int); planIndexParameter.Value = (AgeItem.AgeIndex== null) ? DBNull.Value : AgeItem.AgeIndex; parameters[0] = planIndexParameter;
189 c#  dbnull  sqlparameter 

15
วิธีที่มีประสิทธิภาพมากที่สุดในการตรวจสอบ DBNull แล้วกำหนดให้กับตัวแปรหรือไม่
คำถามนี้เกิดขึ้นเป็นครั้งคราว แต่ฉันไม่เห็นคำตอบที่น่าพอใจ รูปแบบทั่วไปคือ (แถวคือDataRow ): if (row["value"] != DBNull.Value) { someObject.Member = row["value"]; } คำถามแรกของฉันคือคำถามใดมีประสิทธิภาพมากขึ้น (ฉันพลิกเงื่อนไข): row["value"] == DBNull.Value; // Or row["value"] is DBNull; // Or row["value"].GetType() == typeof(DBNull) // Or... any suggestions? สิ่งนี้บ่งชี้ว่า. GetType () ควรจะเร็วกว่านี้ แต่บางทีคอมไพเลอร์ก็รู้เทคนิคเล็กน้อยที่ฉันไม่ต้องการ คำถามที่สองมันคุ้มค่าที่จะแคชค่าของแถว ["value"] หรือคอมไพเลอร์ปรับดัชนีให้เหมาะสมหรือไม่? ตัวอย่างเช่น: object valueHolder; if (DBNull.Value == (valueHolder = row["value"])) …
151 .net  dbnull 

6
SQLite เทียบเท่ากับ ISNULL (), NVL (), IFNULL () หรือ COALESCE ()
ฉันต้องการหลีกเลี่ยงการตรวจสอบจำนวนมากดังต่อไปนี้ในรหัสของฉัน: myObj.someStringField = rdr.IsDBNull(someOrdinal) ? string.Empty : rdr.GetString(someOrdinal); ฉันคิดว่าฉันสามารถให้แบบสอบถามของฉันดูแลค่าว่างได้โดยทำสิ่งนี้: SELECT myField1, [isnull](myField1, '') FROM myTable1 WHERE myField1 = someCondition ฉันใช้ SQLite และดูเหมือนว่าจะไม่รู้จักisnullฟังก์ชันนี้ ฉันได้พยายามยังคนเทียบเท่าบางส่วนได้รับการยอมรับในฐานข้อมูลอื่น ๆ ( NVL(), IFNULL()และCOALESCE()) แต่ SQLite ดูเหมือนจะไม่รับรู้ใด ๆ ของพวกเขา ใครมีคำแนะนำหรือรู้วิธีที่ดีกว่านี้ น่าเสียดายที่ฐานข้อมูลไม่มีค่าเริ่มต้นสำหรับทุกฟิลด์ นอกจากนี้ฉันจำเป็นต้องใช้บางส่วนLEFT JOINในบางกรณีซึ่งบางฟิลด์ที่ส่งคืนจะเป็นโมฆะเนื่องจากไม่มีระเบียนที่ตรงกันในLEFT JOINตาราง
92 .net  sqlite  dbnull 

6
อะไรคือความแตกต่างระหว่าง null และ System.DBNull.Value?
มีความแตกต่างระหว่าง 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 คืออะไร?
92 c#  null  dbnull 
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.