Mengalamatkan Nilai Null Pangkalan Data: Penyelesaian untuk "Tidak dapat menghantar objek jenis 'System.DBNull' untuk menaip 'System.String'"
Interaksi pangkalan data selalunya membawa kepada ralat "Tidak dapat menghantar objek jenis 'System.DBNull' ke 'System.String'" yang mengecewakan. Ini timbul daripada percubaan untuk menukar nilai nol pangkalan data kepada jenis data tertentu. Berikut menunjukkan penyelesaian yang mantap:
Pertama, pertimbangkan pendekatan asas:
public string GetCustomerNumber(Guid id) { object accountNumber = DBSqlHelperFactory.ExecuteScalar(connectionStringSplendidmyApp, CommandType.StoredProcedure, "GetCustomerNumber", new SqlParameter("@id", id)); if (accountNumber == DBNull.Value) { return string.Empty; } else { return accountNumber.ToString(); } }
Kaedah ini berkesan mengendalikan null dengan mengembalikan rentetan kosong. Walau bagaimanapun, penyelesaian yang lebih serba boleh dan cekap menggunakan fungsi generik:
public static T ConvertFromDBVal<T>(object obj) { if (obj == null || obj == DBNull.Value) { return default(T); } else { return (T)obj; } }
Fungsi generik ini memudahkan kod asal kepada:
return ConvertFromDBVal<string>(accountNumber);
Penyelesaian elegan ini menawarkan keselamatan jenis dan mengembalikan nilai lalai yang sesuai untuk sebarang jenis data, meningkatkan kebolehbacaan dan kebolehselenggaraan kod. Ia merupakan kaedah terbaik untuk mengendalikan nilai nol yang diperoleh daripada pertanyaan pangkalan data.
Atas ialah kandungan terperinci Bagaimana untuk mengendalikan ralat dbnull.value dengan berkesan apabila mengambil data dari pangkalan data?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!