首頁 >後端開發 >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