저장 프로시저와 함께 C#을 사용하여 MySQL에 매개 변수를 삽입하고 '사람 열은 null일 수 없습니다.' 오류를 방지하려면 어떻게 해야 합니까?

Susan Sarandon
풀어 주다: 2024-11-23 06:04:37
원래의
944명이 탐색했습니다.

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

저장 프로시저를 사용하여 C#으로 MySQL에 매개변수 삽입

데이터베이스 상호 작용 영역에서는 새 레코드를 추가하는 작업이 자주 발생할 수 있습니다. 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿