Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah saya dapat mengendalikan 'tidak dapat membuang objek jenis 'System.Dbnull' untuk menaip 'Sistem.String'' kesilapan dalam C#?

Bagaimanakah saya dapat mengendalikan 'tidak dapat membuang objek jenis 'System.Dbnull' untuk menaip 'Sistem.String'' kesilapan dalam C#?

Barbara Streisand
Lepaskan: 2025-01-25 10:11:08
asal
678 orang telah melayarinya

How Can I Effectively Handle

Penyelesaian bijak untuk "Tidak boleh menghantar objek jenis 'System.DBNull' untuk menaip 'System.String'" ralat

Apabila cuba menukar nilai DBNull kepada rentetan, anda sering menghadapi ralat "Tidak boleh menghantar objek jenis 'System.DBNull' untuk menaip 'System.String'". Satu cara untuk mengendalikannya ialah menggunakan pernyataan bersyarat yang mengembalikan rentetan kosong jika nilainya ialah DBNull. Walau bagaimanapun, kaedah ini membosankan dan terdedah kepada kesilapan.

Penyelesaian yang lebih elegan ialah menggunakan fungsi generik untuk mengendalikan penukaran daripada nilai pangkalan data kepada jenis yang diperlukan, seperti ini:

public static T ConvertFromDBVal<T>(object obj)
{
    if (obj == null || obj == DBNull.Value)
    {
        return default(T); // 返回该类型的默认值
    }
    else
    {
        return (T)obj;
    }
}
Salin selepas log masuk

Fungsi ini menerima objek sebagai input dan mengembalikan nilai yang ditukar dalam jenis yang diperlukan (dalam kes ini, rentetan). Cara menggunakan:

object accountNumber = 
          DBSqlHelperFactory.ExecuteScalar(connectionStringSplendidmyApp, 
                          CommandType.StoredProcedure, 
                          "spx_GetCustomerNumber", 
                          new SqlParameter("@id", id));
Salin selepas log masuk
return ConvertFromDBVal<string>(accountNumber);
Salin selepas log masuk

Dengan menggunakan fungsi generik ini, anda boleh memudahkan kod anda dan menghapuskan keperluan untuk pemeriksaan bersyarat, memastikan keselamatan jenis dan mengurangkan kemungkinan ralat.

Atas ialah kandungan terperinci Bagaimanakah saya dapat mengendalikan 'tidak dapat membuang objek jenis 'System.Dbnull' untuk menaip 'Sistem.String'' kesilapan dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan