Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

System.InvalidCastException:Objek tidak dapat dilemparkan dari DBNull ke tipe lain

Seperti yang dikatakan pesan kesalahan, nilai selnya adalah DBNull.Value dan itu tidak dapat mengonversi dari itu menjadi apa pun yang Anda inginkan (dalam hal ini long atau int ). Anda perlu memeriksa DBNull sebelum mengonversi/mentransmisikan nomor:

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);

Karena ini menambahkan beberapa overhead yang mengganggu, jika Anda melakukan sebanyak ini, Anda mungkin ingin membuat metode pembantu yang melakukannya untuk Anda.

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

Maka kode Anda dapat menjadi:

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. Bagaimana cara menghasilkan pernyataan DELETE di PL/SQL, berdasarkan tabel hubungan FK?

  2. Bagaimana menjalankan prosedur tersimpan di pengembang Oracle sql?

  3. Oracle membaca nama kolom dari pernyataan pilih

  4. cara menemukan semua indeks dan kolomnya untuk tabel, tampilan, dan sinonim di oracle

  5. Oracle pilih tidak mengembalikan semua kolom di bawah sqlplus