Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk Mengendalikan Ralat 'Objek tidak boleh dihantar dari DBNull ke jenis lain' dalam C#?

Bagaimana untuk Mengendalikan Ralat 'Objek tidak boleh dihantar dari DBNull ke jenis lain' dalam C#?

DDD
Lepaskan: 2025-01-11 15:06:42
asal
998 orang telah melayarinya

How to Handle

Tidak boleh menukar objek daripada DBNull kepada jenis lain

Perihalan ralat:

Mesej ralat "Tidak dapat menukar objek daripada DBNull kepada jenis lain" menunjukkan bahawa percubaan untuk menukar nilai DBNull (mewakili nilai nol dalam pangkalan data) kepada jenis tidak boleh dibatalkan (Int64 dalam kes ini) gagal.

Sebab ralat:

Dalam kod yang disediakan, baris berikut cuba menukar nilai parameter output bernama "op_Id" kepada Int64:

<code>DataTO.Id = Convert.ToInt64(dataAccCom.GetParameterValue(IDbCmd, "op_Id"));</code>
Salin selepas log masuk

Jika prosedur tersimpan mengembalikan nilai DBNull untuk parameter ini, penukaran akan gagal dengan ralat.

Penyelesaian:

Untuk menyelesaikan isu ini, semak secara eksplisit sama ada nilai parameter output ialah DBNull sebelum mencuba penukaran. Jika DBNull, null atau nilai lalai diberikan kepada sifat yang sepadan dalam objek DataTO. Berikut ialah kod yang dikemas kini:

<code>var outputParam = dataAccCom.GetParameterValue(IDbCmd, "op_Id");
if (outputParam != DBNull.Value)
    DataTO.Id = Convert.ToInt64(outputParam);
else
    DataTO.Id = null; // 或分配默认值,例如 0 或 -1</code>
Salin selepas log masuk

Pengubahsuaian ini memastikan kod itu mantap apabila berurusan dengan nilai nol yang mungkin wujud dalam pangkalan data. Menggunakan outputParam != DBNull.Value adalah lebih ringkas dan jelas daripada !(outputParam is DBNull) dan tiada perbezaan yang ketara dalam prestasi. Pilihan tetapan DataTO.Id kepada null atau nilai lalai bergantung pada logik aplikasi anda dan sama ada jenis atribut DataTO.Id membenarkan pembatalan.

Atas ialah kandungan terperinci Bagaimana untuk Mengendalikan Ralat 'Objek tidak boleh dihantar dari DBNull ke jenis lain' 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan