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
Barbara Streisandasal
2025-01-25 10:11:08680semak imbas

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:

<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!

Kenyataan:
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