Maison >développement back-end >C++ >Comment insérer en toute sécurité des données dans une base de données Access à l'aide de paramètres ?

Comment insérer en toute sécurité des données dans une base de données Access à l'aide de paramètres ?

DDD
DDDoriginal
2025-01-22 16:06:12484parcourir

How to Safely Insert Data into an Access Database Using Parameters?

Utiliser des paramètres pour insérer des données dans la base de données Access

L'insertion de données de base de données Access directement à l'aide de paramètres codés en dur peut entraîner des problèmes, en particulier lorsque vous travaillez avec du texte contenant des guillemets simples. Pour résoudre ce problème, vous pouvez utiliser des paramètres dans la requête au lieu de valeurs de chaîne directes.

Étape 1 : Remplacer les paramètres codés en dur par des espaces réservés

Dans le code fourni, remplacez chaque paramètre codé en dur dans la requête INSERT par un espace réservé préfixé par "@". Par exemple :

<code>cmd.CommandText = "INSERT INTO bookRated([title], [rating],  [review], [frnISBN], [frnUserName])VALUES('@title', '@rating','@review','@ISBN', '@userName')";</code>

Étape 2 : Ajouter OleDbParameters à DbCommand

Créez une instance OleDbParameter et ajoutez-la à la propriété DbCommand.Parameters. Les noms des paramètres doivent correspondre aux noms d'espace réservé utilisés dans la requête :

<code>cmd.Parameters.AddRange(new OleDbParameter[]
{
    new OleDbParameter("@title", title),
    new OleDbParameter("@rating", rating),
    ...
});</code>

Code modifié :

<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>

En utilisant des paramètres, la base de données peut gérer correctement les caractères spéciaux tels que les guillemets simples, garantissant ainsi l'intégrité des données.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn