Rumah > Artikel > pangkalan data > Mengapa ExecuteScalar() Mengembalikan 0 Apabila Mendapatkan ID Baris yang Disisipkan dalam 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!