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'?

Bagaimanakah saya boleh memasukkan parameter ke dalam MySQL menggunakan C# dengan prosedur tersimpan dan mengelakkan ralat 'lajur orang tidak boleh batal'?

Susan Sarandon
Susan Sarandonasal
2024-11-23 06:04:37944semak imbas

How do I insert parameters into MySQL using C# with stored procedures and  avoid  the

Memasukkan Parameter ke dalam MySQL dengan C# Menggunakan Prosedur Tersimpan

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!

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