利用參數將資料插入 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中文網其他相關文章!