Dapatkan semula ID Baris yang Disisipkan dengan Berkesan dalam C#
Apabila bekerja dengan operasi pangkalan data, menangkap pengecam unik baris yang dimasukkan adalah penting. Ini benar terutamanya apabila membuat segmen seterusnya kod anda. Walau bagaimanapun, menghadapi nilai pulangan yang konsisten sebanyak 0 walaupun ID sebenar mempunyai nilai bukan sifar boleh mengecewakan.
Mari kita mendalami isu yang anda hadapi. Kod C# yang disediakan cuba untuk mendapatkan ID baris yang disisipkan, tetapi ia sentiasa mengembalikan 0. Tingkah laku ini berpunca daripada kesilapan dalam pelaksanaan kod.
Inti masalah terletak dalam baris berikut:
int id = Convert.ToInt32(comm.ExecuteScalar());
Walaupun kaedah ExecuteScalar mampu mendapatkan semula nilai tunggal daripada pertanyaan yang dilaksanakan, adalah penting untuk ambil perhatian bahawa ia tidak mengembalikan ID baris yang dimasukkan secara automatik. Isu timbul apabila anda cuba menghantar nilai yang dikembalikan kepada int menggunakan Convert.ToInt32. Penghantaran ini boleh membawa kepada penukaran yang salah, menyebabkan 0 dikembalikan.
Untuk membetulkan keadaan ini, kami perlu menggantikan ExecuteScalar dengan ExecuteNonQuery. Fungsi ini bertanggungjawab untuk melaksanakan pernyataan bukan pertanyaan, seperti operasi sisipan. Berikutan kejayaan pelaksanaan pernyataan sisipan, anda boleh memanfaatkan sifat LastInsertedId bagi objek MySqlCommand untuk mendapatkan ID baris yang baru dibuat:
MySqlCommand comm = connect.CreateCommand(); comm.CommandText = insertStatement; comm.ExecuteNonQuery(); long id = comm.LastInsertedId;
Dengan melaksanakan pelarasan ini, anda boleh mendapatkan ID dengan berkesan baris yang disisipkan, memastikan peralihan yang lancar ke fasa seterusnya pelaksanaan kod anda.
Atas ialah kandungan terperinci Mengapa Kod C# Saya Sentiasa Mengembalikan 0 untuk ID Baris yang Dimasukkan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!