在資料庫互動領域,經常會出現新增記錄的任務。在使用 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中文網其他相關文章!