使用参数将数据插入 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中文网其他相关文章!