Rumah > pembangunan bahagian belakang > C++ > Bagaimana Mengendalikan Nilai DBNull Apabila Mendapatkan Data daripada Pangkalan Data dalam C#?

Bagaimana Mengendalikan Nilai DBNull Apabila Mendapatkan Data daripada Pangkalan Data dalam C#?

Susan Sarandon
Lepaskan: 2025-01-25 10:27:10
asal
805 orang telah melayarinya

How to Handle DBNull Values When Retrieving Data from a Database in C#?

C# Memproses nilai DBNull dalam bacaan pangkalan data

Apabila mendapatkan semula data daripada pangkalan data, anda mungkin menghadapi nilai pulangan null atau DBNull. Ini boleh menyebabkan ralat semasa cuba menghantar nilai kepada jenis tertentu (seperti rentetan).

Coretan kod berikut menunjukkan cara menyelesaikan masalah ini: Kod asal cuba menghantar hasil kaedah ExecuteScalar terus ke rentetan, mengakibatkan ralat 'Tidak boleh menghantar objek jenis 'System.DBNull' ke taip ' System.String'".

Untuk menyelesaikan masalah ini, anda boleh menggunakan kaedah berikut:

1. Gunakan semakan nol untuk penukaran jenis eksplisit:

Anda boleh menyemak DBNull secara eksplisit sebelum mencuba pelakon. Berikut ialah kod yang diubah suai:

<code class="language-csharp">public string GetCustomerNumber(Guid id)
{
    object accountNumber =
        DBSqlHelperFactory.ExecuteScalar(connectionStringSplendidCRM,
                            CommandType.StoredProcedure,
                            "spx_GetCustomerNumber",
                            new SqlParameter("@id", id));

    if (accountNumber is DBNull)
    {
        return string.Empty; // 返回空字符串
    }
    else
    {
        return accountNumber.ToString();
    }
}</code>
Salin selepas log masuk

2. Gunakan fungsi generik untuk penukaran jenis:

Anda boleh mencipta fungsi generik untuk mengendalikan penukaran:

<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>
Salin selepas log masuk

Anda kemudian boleh menggunakannya seperti berikut:

<code class="language-csharp">return ConvertFromDBVal<string>(accountNumber);</code>
Salin selepas log masuk

Fungsi generik ini membolehkan anda menukar objek yang dikembalikan kepada mana-mana jenis tertentu, menjadikan kod lebih serba boleh dan lebih mudah dibaca.

Respons yang disemak ini mengekalkan imej asal, menggunakan bahasa yang lebih jelas dan ringkas serta menyusun semula kandungan untuk kebolehbacaan yang lebih baik sambil mengekalkan makna asal.

Atas ialah kandungan terperinci Bagaimana Mengendalikan Nilai DBNull Apabila Mendapatkan Data daripada Pangkalan Data dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
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