Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk Mengelakkan 'Tidak dapat menghantar objek jenis 'System.DBNull' untuk menaip 'System.String'' Ralat dalam Pertanyaan Pangkalan Data C#?

Bagaimana untuk Mengelakkan 'Tidak dapat menghantar objek jenis 'System.DBNull' untuk menaip 'System.String'' Ralat dalam Pertanyaan Pangkalan Data C#?

Linda Hamilton
Lepaskan: 2025-01-25 10:16:14
asal
730 orang telah melayarinya

How to Avoid

Mengatasi Ralat "Tidak dapat menghantar objek jenis 'System.DBNull' untuk menaip 'System.String'" dalam Pertanyaan Pangkalan Data

Interaksi pangkalan data kadangkala boleh membuang "Tidak dapat menghantar objek jenis 'System.DBNull' untuk menaip 'System.String'". Ini berlaku apabila cuba menukar terus nilai pangkalan data System.DBNull kepada rentetan. Mari terokai penyelesaian untuk mencegah perkara ini.

Berikut ialah coretan kod yang disemak yang menunjukkan pendekatan yang mantap:

public string GetCustomerNumber(Guid id)
{
   object accountNumber = DBSqlHelperFactory.ExecuteScalar(connectionStringSplendidCRM, 
                                                          CommandType.StoredProcedure, 
                                                          "spx_GetCustomerNumber", 
                                                          new SqlParameter("@id", id));

   return accountNumber is DBNull ? string.Empty : accountNumber.ToString();
}
Salin selepas log masuk

Versi yang dipertingkatkan ini mengelakkan penghantaran terus. Ia menggunakan operator bersyarat (?:) untuk menyemak sama ada accountNumber ialah DBNull. Jika ya, rentetan kosong dikembalikan; jika tidak, ToString() menukar objek kepada rentetan dengan selamat.

Untuk penyelesaian yang lebih serba boleh, pertimbangkan fungsi generik ini:

public static T ConvertFromDBVal<T>(object obj)
{
    if (obj == null || obj == DBNull.Value)
    {
        return default(T); // Returns the default value for the specified type
    }
    return (T)obj;
}
Salin selepas log masuk

Fungsi generik ini mengendalikan pelbagai jenis data. Anda menentukan jenis sasaran menggunakan parameter jenis, membenarkan penukaran yang selamat dan betul jenis:

return ConvertFromDBVal<string>(accountNumber);
Salin selepas log masuk

Pendekatan ini lebih bersih, lebih boleh digunakan semula dan kurang terdedah kepada ralat penghantaran. Dengan melaksanakan kaedah ini, anda boleh mengendalikan nilai DBNull dengan berkesan dan menghalang ralat "Tidak dapat menghantar objek jenis 'System.DBNull' untuk menaip 'System.String'" daripada mengganggu operasi pangkalan data anda.

Atas ialah kandungan terperinci Bagaimana untuk Mengelakkan 'Tidak dapat menghantar objek jenis 'System.DBNull' untuk menaip 'System.String'' Ralat dalam Pertanyaan Pangkalan Data 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