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; } }
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));
return ConvertFromDBVal<string>(accountNumber);
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!