>백엔드 개발 >C++ >매개 변수를 사용하여 Access 데이터베이스에 데이터를 안전하게 삽입하는 방법은 무엇입니까?

매개 변수를 사용하여 Access 데이터베이스에 데이터를 안전하게 삽입하는 방법은 무엇입니까?

DDD
DDD원래의
2025-01-22 16:06:12484검색

How to Safely Insert Data into an Access Database Using Parameters?

매개변수를 사용하여 Access 데이터베이스에 데이터 삽입

하드 코딩된 매개변수를 사용하여 Access 데이터베이스 데이터를 직접 삽입하면 특히 작은따옴표가 포함된 텍스트로 작업할 때 문제가 발생할 수 있습니다. 이 문제를 해결하려면 직접 문자열 값 대신 쿼리에 매개 변수를 사용할 수 있습니다.

1단계: 하드코딩된 매개변수를 자리 표시자로 교체

제공된 코드에서 INSERT 쿼리의 하드코딩된 각 매개변수를 "@" 접두사가 붙은 자리 표시자로 바꿉니다. 예:

<code>cmd.CommandText = "INSERT INTO bookRated([title], [rating],  [review], [frnISBN], [frnUserName])VALUES('@title', '@rating','@review','@ISBN', '@userName')";</code>

2단계: DbCommand에 OleDbParameters 추가

OleDbParameter 인스턴스를 생성하고 DbCommand.Parameters 속성에 추가합니다. 매개변수 이름은 쿼리에 사용된 자리 표시자 이름과 일치해야 합니다.

<code>cmd.Parameters.AddRange(new OleDbParameter[]
{
    new OleDbParameter("@title", title),
    new OleDbParameter("@rating", rating),
    ...
});</code>

수정된 코드:

<code>[WebMethod]
public void bookRatedAdd(string title, int rating, string review, string ISBN, string userName)
{
   using (OleDbConnection conn = new OleDbConnection(
         "Provider=Microsoft.Jet.OleDb.4.0;"+
         "Data Source="+Server.MapPath("App_Data\BookRateInitial.mdb"));
   {

      conn.Open();

      // DbCommand 也实现了 IDisposable 接口
      using (OleDbCommand cmd = conn.CreateCommand())
      {
           // 使用占位符创建命令
           cmd.CommandText = 
              "INSERT INTO bookRated "+
              "([title], [rating],  [review], [frnISBN], [frnUserName]) "+
              "VALUES(@title, @rating, @review, @isbn, @username)";

           // 添加命名参数
           cmd.Parameters.AddRange(new OleDbParameter[]
           {
               new OleDbParameter("@title", title),
               new OleDbParameter("@rating", rating),
               // ... 其他参数
           });

           // 执行
           cmd.ExecuteNonQuery();
      }
   }
}</code>

매개변수를 사용하면 데이터베이스에서 작은따옴표와 같은 특수 문자를 올바르게 처리할 수 있으므로 데이터 무결성이 보장됩니다.

위 내용은 매개 변수를 사용하여 Access 데이터베이스에 데이터를 안전하게 삽입하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.