Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

System.InvalidCastException:Không thể truyền đối tượng từ DBNull sang các loại khác

Như thông báo lỗi cho biết, giá trị của ô là DBNull.Value và nó không thể chuyển đổi từ đó sang bất cứ thứ gì bạn muốn (trong trường hợp này là long hoặc một int ). Bạn cần kiểm tra DBNull trước khi chuyển đổi / truyền số:

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

Bởi vì điều này thêm một số chi phí khó chịu, nếu bạn làm điều này nhiều có thể bạn sẽ muốn tạo một phương thức trợ giúp thực hiện điều đó cho bạn.

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

Sau đó, mã của bạn có thể là:

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. Lấy SQLException java.sql.SQLException:ResultSet.next không được gọi

  2. Làm thế nào để trả về cá thể CLOB tạm thời từ hàm được lưu trữ trong Pl / SQL?

  3. Sử dụng `SELECT` để gọi một hàm

  4. Truy vấn SQL để nhận các Giá trị riêng biệt của tất cả các giá trị cột trong bảng

  5. Sự khác biệt giữa 'YYYY' và 'RRRR' trong Oracle SQL là gì