首頁 >資料庫 >mysql教程 >如何使用 C# 和預存程序將參數插入 MySQL 並避免'person 列不能為空”錯誤?

如何使用 C# 和預存程序將參數插入 MySQL 並避免'person 列不能為空”錯誤?

Susan Sarandon
Susan Sarandon原創
2024-11-23 06:04:37954瀏覽

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

使用 C# 使用預存程序將參數插入 MySQL

在資料庫互動領域,經常會出現新增記錄的任務。在使用 C# 程式語言和 MySQL 資料庫時,您可能會遇到需要使用參數將資料插入表中的情況,以確保資料完整性並防止 SQL 注入攻擊。

一個常見的方法是使用參數集合MySqlCommand 類別的屬性來定義將在 SQL 語句中使用的參數。在您的特定情況下,您旨在將人員和地址列的值插入房間表中,但遇到錯誤,指出人員列不能為空。

要修正此問題,您需要指派執行指令之前先給參數賦值。這可以使用 AddWithValue 方法來實現,該方法會自動處理參數類型轉換,或透過明確指定參數類型並設定 Value 屬性來實現。

使用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();
}

使用參數類型和值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)
使用參數類型和值property:

// ... (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)

一種替代方法是在SQL 語句中使用由問號(?)表示的位置參數:

利用這些參數化技術,您可以安全地將資料插入 MySQL 資料庫,同時防止 SQL 注入漏洞。

以上是如何使用 C# 和預存程序將參數插入 MySQL 並避免'person 列不能為空”錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn