Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

System.InvalidCastException:ऑब्जेक्ट को DBNull से अन्य प्रकारों में नहीं डाला जा सकता है

जैसा कि त्रुटि संदेश कहता है, सेल का मान DBNull.Value है और यह उस से परिवर्तित नहीं हो सकता जो आप चाहते हैं (इस मामले में एक long या एक int ) आपको DBNull . की जांच करने की आवश्यकता है नंबर बदलने/कास्ट करने से पहले:

Int64 id_riga = 0;
object value = (sender as DataGridView).Rows[e.RowIndex].Cells["column_ID"].Value;
if(value != DBNull.Value) 
    id_riga = Convert.ToInt64(value);

क्योंकि यह कुछ कष्टप्रद ओवरहेड जोड़ता है, यदि आप इतना करते हैं तो आप शायद एक सहायक विधि बनाना चाहेंगे जो आपके लिए यह काम करे।

public static long? getLongFromDB(object value)
{
    if (value == DBNull.Value) return null;
    return Convert.ToInt64(value);
}

तब आपका कोड हो सकता है:

Int64 id_riga = getLongFromDB((sender as DataGridView).Rows[e.RowIndex].Cells["column_ID"].Value)
    .GetValueOrDefault();


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. कर्मचारियों के नामों को उनके शहर के कॉलम के अनुसार व्यवस्थित करने की आवश्यकता है

  2. Oracle डेटाबेस में सभी दृश्यों को कैसे सूचीबद्ध करें

  3. oracle.sql.ARRAY ऑब्जेक्ट कैसे बनाएं?

  4. कॉलम अधिकतम मान के आधार पर रिकॉर्ड प्राप्त करें

  5. बिंदु बादल प्रारंभ करने में असमर्थ - ORA-13249:dml ट्रिगर बनाने में त्रुटि