Rumah > Artikel > pangkalan data > Bagaimanakah saya boleh memasukkan parameter ke dalam MySQL menggunakan C# dengan prosedur tersimpan dan mengelakkan ralat 'lajur orang tidak boleh batal'?
Dalam bidang interaksi pangkalan data, tugas menambah rekod baharu selalunya boleh timbul. Apabila bekerja dengan bahasa pengaturcaraan C# dan pangkalan data MySQL, anda mungkin menghadapi situasi di mana anda perlu memasukkan data ke dalam jadual menggunakan parameter untuk memastikan integriti data dan mencegah serangan suntikan SQL.
Satu pendekatan biasa melibatkan penggunaan koleksi Parameter daripada kelas MySqlCommand untuk menentukan parameter yang akan digunakan dalam pernyataan SQL. Dalam kes khusus anda, anda bertujuan untuk memasukkan nilai untuk orang dan lajur alamat ke dalam jadual bilik, tetapi menghadapi ralat yang menyatakan bahawa lajur orang itu tidak boleh batal.
Untuk membetulkan isu ini, anda perlu menetapkan nilai kepada parameter sebelum melaksanakan arahan. Ini boleh dicapai menggunakan kaedah AddWithValue, yang mengendalikan penukaran jenis parameter secara automatik atau dengan menyatakan jenis parameter secara eksplisit dan menetapkan sifat Nilai.
Menggunakan kaedah AddWithValue:
// Create a connection to the MySQL database string connString = ConfigurationManager.ConnectionStrings["default"].ConnectionString; using (MySqlConnection conn = new MySqlConnection(connString)) { conn.Open(); // Prepare the SQL statement using (MySqlCommand comm = conn.CreateCommand()) { comm.CommandText = "INSERT INTO room(person, address) VALUES(@person, @address)"; // Add parameters using the AddWithValue method comm.Parameters.AddWithValue("@person", "MyName"); comm.Parameters.AddWithValue("@address", "MyAddress"); // Execute the command to insert the data comm.ExecuteNonQuery(); } conn.Close(); }
Menggunakan jenis dan Nilai parameter property:
// ... (code as before) // Prepare the SQL statement using (MySqlCommand comm = conn.CreateCommand()) { comm.CommandText = "INSERT INTO room(person, address) VALUES(@person, @address)"; // Add parameters with explicit types and set values comm.Parameters.Add("@person", MySqlDbType.VarChar).Value = "MyName"; comm.Parameters.Add("@address", MySqlDbType.VarChar).Value = "MyAddress"; // Execute the command to insert the data comm.ExecuteNonQuery(); } // ... (code as before)
Selain itu, alternatif lain ialah menggunakan parameter kedudukan yang dilambangkan dengan tanda soal (?) dalam pernyataan SQL:
// ... (code as before) // Prepare the SQL statement with positional parameters using (MySqlCommand comm = conn.CreateCommand()) { comm.CommandText = "INSERT INTO room(person, address) VALUES(?person, ?address)"; // Add parameters using positional syntax comm.Parameters.Add("?person", MySqlDbType.VarChar).Value = "MyName"; comm.Parameters.Add("?address", MySqlDbType.VarChar).Value = "MyAddress"; // Execute the command to insert the data comm.ExecuteNonQuery(); } // ... (code as before)
Dengan menggunakan teknik parameterisasi ini, anda boleh memasukkan data dengan selamat ke dalam pangkalan data MySQL anda sambil menghalang kelemahan suntikan SQL.
Atas ialah kandungan terperinci Bagaimanakah saya boleh memasukkan parameter ke dalam MySQL menggunakan C# dengan prosedur tersimpan dan mengelakkan ralat 'lajur orang tidak boleh batal'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!