Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah saya dapat mengendalikan 'tidak dapat membuang objek jenis 'System.Dbnull' untuk menaip 'Sistem.String'' kesilapan dalam C#?
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:
<code class="language-csharp">public static T ConvertFromDBVal<T>(object obj) { if (obj == null || obj == DBNull.Value) { return default(T); // 返回该类型的默认值 } else { return (T)obj; } }</code>
Fungsi ini menerima objek sebagai input dan mengembalikan nilai yang ditukar dalam jenis yang diperlukan (dalam kes ini, rentetan). Cara menggunakan:
<code class="language-csharp">object accountNumber = DBSqlHelperFactory.ExecuteScalar(connectionStringSplendidmyApp, CommandType.StoredProcedure, "spx_GetCustomerNumber", new SqlParameter("@id", id));</code>
<code class="language-csharp">return ConvertFromDBVal<string>(accountNumber);</code>
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!