Maison >Java >javaDidacticiel >Pourquoi ne puis-je pas utiliser des instructions préparées pour définir les noms de tables dans les requêtes SQL ?

Pourquoi ne puis-je pas utiliser des instructions préparées pour définir les noms de tables dans les requêtes SQL ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-10 05:32:14397parcourir

Why Can't I Use Prepared Statements to Set Table Names in SQL Queries?

Définition des noms de table à l'aide d'instructions préparées

Lorsque vous travaillez avec des instructions préparées, il est essentiel de comprendre leurs limites. Dans l'exemple donné, le développeur a rencontré une erreur en tentant de définir un nom de table à l'aide de la substitution de paramètres.

Problème :

La requête nécessite un nom de table comme source pour la récupération des données, mais l'instruction "SELECT" utilisait un paramètre où un nom de table était attendu.

Résolution :

Les noms de tables ne peuvent pas être définis dynamiquement à l'aide des paramètres d'instruction préparés. Au lieu de cela, ils doivent être codés en dur dans la requête elle-même. La solution fournie modifie le code pour inclure explicitement le nom de la table sous forme de chaîne dans la requête :

private String query1 = "SELECT plantID, edrman, plant, vaxnode FROM [" + reportDate + "?]";

En combinant le nom de la table codé en dur avec le paramètre (?), la requête peut mettre à jour dynamiquement le composant de date tout en en préservant la référence au bon tableau.

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