데이터베이스 상호 작용 영역에서는 새 레코드를 추가하는 작업이 자주 발생할 수 있습니다. C# 프로그래밍 언어 및 MySQL 데이터베이스로 작업할 때 데이터 무결성을 보장하고 SQL 삽입 공격을 방지하기 위해 매개변수를 사용하여 테이블에 데이터를 삽입해야 하는 상황에 직면할 수 있습니다.
일반적인 접근 방식 중 하나는 매개변수 컬렉션을 사용하는 것입니다. MySqlCommand 클래스의 SQL 문에 사용될 매개변수를 정의합니다. 특정한 경우, 방 테이블에 사람 및 주소 열의 값을 삽입하려고 했지만 사람 열이 null일 수 없다는 오류가 발생했습니다.
이 문제를 해결하려면 할당해야 합니다. 명령을 실행하기 전에 매개변수에 값을 추가합니다. 이는 매개변수 유형 변환을 자동으로 처리하는 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(); }
매개변수 유형 및 값 사용 속성:
// ... (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)
또한 또 다른 대안은 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)
이러한 매개 변수화 기술을 활용하여, SQL 주입 취약점을 방지하면서 MySQL 데이터베이스에 안전하게 데이터를 삽입할 수 있습니다.
위 내용은 저장 프로시저와 함께 C#을 사용하여 MySQL에 매개 변수를 삽입하고 '사람 열은 null일 수 없습니다.' 오류를 방지하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!