Rumah  >  Artikel  >  pangkalan data  >  Mengapa ExecuteScalar() Mengembalikan 0 Apabila Mendapatkan ID Baris yang Disisipkan dalam C#?

Mengapa ExecuteScalar() Mengembalikan 0 Apabila Mendapatkan ID Baris yang Disisipkan dalam C#?

Linda Hamilton
Linda Hamiltonasal
2024-11-08 09:48:02394semak imbas

Why Does ExecuteScalar() Return 0 When Retrieving the ID of an Inserted Row in C#?

Mendapatkan semula ID Baris yang Disisipkan dalam C#

Apabila memasukkan data baharu ke dalam jadual pangkalan data, menangkap ID baris yang baru dijana boleh menjadi penting untuk pemprosesan seterusnya. Artikel ini meneroka isu biasa yang menggunakan ExecuteScalar() untuk mendapatkan ID baris yang dimasukkan secara konsisten mengembalikan 0, walaupun ID sebenar bukan sifar.

Blok kod yang disediakan:

MySqlCommand comm = connect.CreateCommand();
comm.CommandText = insertInvoice;
comm.CommandText += "\'" + invoiceDate.ToString("yyyy:MM:dd hh:mm:ss") + "\', " + bookFee + ", " + adminFee + ", " + totalFee + ", " + customerID +  ")";
int id = Convert.ToInt32(comm.ExecuteScalar());

cuba untuk melaksanakan pernyataan sisipan dan mendapatkan ID yang dijana menggunakan ExecuteScalar(). Walau bagaimanapun, pendekatan ini lazimnya gagal disebabkan kaedah ExecuteScalar() tidak dapat diramalkan dalam konteks bukan skalar.

Untuk mendapatkan semula ID baris yang dimasukkan dengan pasti, kod berikut boleh digunakan:

MySqlCommand comm = connect.CreateCommand();
comm.CommandText = insertStatement;
comm.ExecuteNonQuery();
long id = comm.LastInsertedId;

Selepas melaksanakan pernyataan sisipan dengan ExecuteNonQuery(), kita boleh mengakses sifat LastInsertedId bagi objek arahan, yang menyediakan ID yang dijana untuk baris yang dimasukkan baru-baru ini. Kaedah ini disyorkan untuk mendapatkan semula ID baris yang dimasukkan dengan pasti.

Selain itu, sintaks MySQL untuk mendapatkan ID yang dimasukkan (last_insert_id()) tidak disokong dalam C#. Sebaliknya, LastInsertedId boleh digunakan sebagai sebahagian daripada objek MySqlCommand untuk mendapatkan ID yang dijana.

Atas ialah kandungan terperinci Mengapa ExecuteScalar() Mengembalikan 0 Apabila Mendapatkan ID Baris yang Disisipkan 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