Dans notre code actuel, nous utilisons des classes MFC db pour nous connecter à DB2. C'est tout le vieux code qui nous a été transmis par une autre équipe de développement, donc nous connaissons une partie de l'histoire mais pas tous.SQL dynamique vs SQL statique
La plupart du code abstrait la création de requêtes SQL à l'aide de fonctions telles que Update() et Insert() qui préfixent quelque chose comme "INSERT INTO SCHEMA.TABLE" sur une chaîne que vous fournissez. Cela se fait via les classes de jeu d'enregistrements qui se trouvent au-dessus de la classe de base de données
L'autre façon de faire les requêtes SQL est de les exécuter directement sur la classe de base de données en utilisant dbclass.ExecuteSQL (String). Nous nous demandons quels sont les avantages et les inconvénients de chaque approche. De notre point de vue, il est beaucoup plus facile de faire l'appel ExecuteSQL(), car nous n'avons pas besoin d'écrire une autre classe, mais il doit y avoir de bonnes raisons de faire l'inverse. nous ne sommes tout simplement pas sûrs de ce qu'ils sont.
Toute aide serait géniale!
Merci Mark
Mise à jour ----
Je pense que je l'ai mal compris dynamiques et statiques SQL. Je pense que notre code utilise toujours Dynamic, donc ma question devient vraiment, devrais-je construire les chaînes SQL moi-même et faire un ExecuteSQL() ou devrait-il être retiré dans une classe pour chaque table dans la base de données? faire?
Quoi que vous fassiez, désinfectez toujours les valeurs que vous mettez dans la Requête SQL, si vous ne le faites pas déjà. Le SQL dynamique est très vulnérable aux injections SQL. Assurez-vous qu'il n'y a rien dans les données qui pourrait modifier votre instruction SQL. – Skurmedel