パラメーターを使用して Access データベースにデータを挿入します
ハードコーディングされたパラメーターを使用して Access データベース データを直接挿入すると、特に一重引用符を含むテキストを操作する場合に問題が発生する可能性があります。この問題を解決するには、クエリで直接文字列値の代わりにパラメータを使用します。
ステップ 1: ハードコードされたパラメーターをプレースホルダーに置き換えます
提供されたコードで、INSERT クエリ内のハードコーディングされた各パラメーターを、接頭辞「@」が付いたプレースホルダーに置き換えます。例:
<code>cmd.CommandText = "INSERT INTO bookRated([title], [rating], [review], [frnISBN], [frnUserName])VALUES('@title', '@rating','@review','@ISBN', '@userName')";</code>
ステップ 2: OleDbParameters を DbCommand に追加します
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 中国語 Web サイトの他の関連記事を参照してください。