使用參數將資料插入 Access 資料庫
由於單引號問題,將包含特殊字元的資料插入 Access 資料庫可能具有挑戰性。使用參數是解決此問題的有效方法。
以下是如何修改程式碼以使用參數取代硬編碼值:
a) 將實際參數替換為佔位符:
在 cmd.CommandText
屬性中,將實際值替換為以 @
為前綴的佔位符:
<code class="language-csharp">cmd.CommandText = @"INSERT INTO bookRated([title], [rating], [review], [frnISBN], [frnUserName]) VALUES (@title, @rating, @review, @ISBN, @userName)";</code>
b) 新增 OleDbParameter 實例:
建立 OleDbParameter
實例並將其新增至 DbCommand.Parameters
屬性。確保參數名稱與 cmd.CommandText
中的佔位符名稱相符:
<code class="language-csharp">// 创建包含占位符的命令 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), // ... 添加其他参数 });</code>
範例:
修改後的程式碼如下圖所示:
<code class="language-csharp">[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中文網其他相關文章!