Utiliser PreparedStatement en Java

Pour les lots et les applications qui nécessitent une connexion à la base de données, les classes suivantes sont généralement utilisées pour implémenter le processus de connexion. --java.sql.Connection classe --java.sql.Statement classe --java.sql.ResultSet classe

Mais dernièrement, il semble être populaire d'utiliser la classe java.sql.PreparedStatement au lieu de la classe Statement. J'écrirai la raison.

Raison

  1. Mesures contre l'injection SQL
  2. Comme son nom l'indique, SQL est mis en cache dans la base de données, donc si vous émettez à plusieurs reprises la même instruction SQL, la vitesse de traitement sera plus rapide.

Comment utiliser

Comment l'utiliser par rapport à la classe Statement.

Pour la classe Statement

  1. Obtenez un objet de la classe Statement. Il peut être obtenu avec l'objet .createStatement () de la classe Connection.
  2. Exécutez une instruction SQL à l'aide d'un objet de la classe Statement. Il peut être exécuté avec l'objet de classe Statement .execute ().
Connection con = DriverManager(hoge,hoge,hoge);
String sql = "select name from hogeData where id = '1'";
Statement st = con.createStatement(sql);
st.execute();

Pour la classe PreparedStatement

  1. Remplacez la valeur de l'instruction SQL que vous souhaitez exécuter par ?. À ce moment-là, il n'est pas nécessaire de le placer dans un guillemet simple.
  2. Obtenez un objet de la classe PreparedStaetment. Il peut être obtenu avec l'objet .preparedStatement () de la classe Connection. Passez l'instruction SQL comme argument.
  3. Dans l'objet .setHoge () de la classe PreparedStatement, insérez une valeur dans ?. À ce moment-là, setInt () pour le type entier et setString () pour la valeur de type chaîne. Dans l'argument, spécifiez la position de ?. S'il s'agit du premier? De? Sur le côté gauche de l'instruction SQL, passez 1 dans le premier argument et la valeur que vous souhaitez insérer dans le deuxième argument.
  4. Il peut être exécuté par l'objet .executeQuery () ou .executeUpdate () de la classe PreparedStatement. La méthode utilisée dépend de la présence ou de l'absence du ResultSet renvoyé.
Connection con = DriverManager(hoge,hoge,hoge);
String sql = "select name from hogeData where id = ?";
Statement st = con.preparedStatement(sql);
st.setInt(1, 1);
ResultSet rs = st.executeQuery();

Si vous souhaitez en savoir plus sur les raisons pour lesquelles vous devriez l'utiliser, lisez ci-dessous. (Je l'ajouterai plus tard)

Recommended Posts

Utiliser PreparedStatement en Java
Utiliser OpenCV avec Java
Utilisons Twilio en Java! (Introduction)
[Java] N'utilisez pas "+" dans append!
Utilisez des clés composites dans Java Maps.
Comment utiliser les classes en Java?
Utilisez-vous Stream en Java?
Partition en Java
Changements dans Java 11
Janken à Java
[Java] Utilisez Collectors.collectingAndThen
Taux circonférentiel à Java
FizzBuzz en Java
Prise en charge multilingue de Java Comment utiliser les paramètres régionaux
Utilisez OpenCV_Contrib (ArUco) avec Java! (Partie 2-Programmation)
[Java] Utiliser la technologie cryptographique avec les bibliothèques standard
Lire JSON en Java
Implémentation de l'interpréteur par Java
Faites un blackjack avec Java
Application Janken en Java
Programmation par contraintes en Java
Mettez java8 dans centos7
Joindre des tableaux en Java
"Hello World" en Java
Interface appelable en Java
Utilisez OpenCV_Contrib (ArUco) avec Java! (Partie 1-Construire) (OpenCV-3.4.4)
Utilisez java.time avec Jackson
Commentaires dans la source Java
Fonctions Azure en Java
[Java] Utilisation de final dans la déclaration de variable locale
Formater XML en Java
Simple htmlspecialchars en Java
Implémentation Boyer-Moore en Java
Utilisez Interceptor au printemps
Hello World en Java
Mémorandum WebApi avec Java
Détermination de type en Java
Exécuter des commandes en Java (ping)
Divers threads en java
API Zabbix en Java
Art ASCII à Java
Comparer des listes en Java
POST JSON en Java
Utiliser MouseListener avec le traitement
Utiliser des images avec des rails
Exprimer l'échec en Java
Utiliser PostgreSQL dans Scala
Créer JSON en Java
[JAVA] [Spring] [MyBatis] Utiliser IN () avec SQL Builder
Manipulation de la date dans Java 8
Nouveautés de Java 8
Nouveautés de Java 9,10,11
Exécution parallèle en Java
Je veux aussi utiliser ES2015 avec Java! → (´ ・ ω ・ `)
[JAVA] [Spring] [MyBatis] Utiliser GROUP BY dans SQL Builder
Utilisation correcte de la classe abstraite et de l'interface en Java
Remarques sur l'utilisation des expressions régulières en Java