Exécutez PostgreSQL sur Java

Lançons PostgreSQL sur Java.

environnement

Introduction du pilote JDBC

Un pilote JDBC est requis en tant qu'API Java standard pour accéder au RDB de PostgreSQL.

Tout d'abord, à partir du téléchargement.

https://jdbc.postgresql.org/download.html#current

Ici, ** postgresql-42.2.5.jar ** est utilisé.

Placez-le n'importe où sous ce projet (est-il facile à comprendre à l'intérieur de lib /?)

スクリーンショット 2019-07-23 16.28.17.png

Cependant, tel quel, il n'est pas possible de savoir où il se réfère, il est donc nécessaire de définir le chemin.

Si mac

Cliquez sur postgresql-42.2.5.jar ** Onglet Projet ** -> ** Propriétés ** -> ** Chemin de construction Java ** -> ** Bibliothèque ** -> * * Ajouter un JAR externe ** -> Trouvez postgresql-42.2.5.jar et ouvrez-> ** Appliquer et fermer **

OK si postgresql-42.2.5.jar est référencé dans la bibliothèque de référence dans

スクリーンショット 2019-07-23 16.41.34.png

DB à utiliser

Cette fois, nous réutiliserons tous ceux que nous avons utilisés auparavant.

Les utilisateurs sont les suivants

terminal


customer=# \l
                                List of databases
   Name    |    Owner    | Encoding | Collate | Ctype |   Access privileges   
-----------+-------------+----------+---------+-------+-----------------------
 customer  | sf213471118 | UTF8     | C       | C     | 

Le tableau utilise le tableau ** client **

terminal


customer=# \d
          List of relations
 Schema |   Name   | Type  |    Owner   
--------+----------+-------+-------------
 public | customer | table | sf213471118

Le contenu de la ** table client ** est le suivant

terminal


customer=# SELECT * FROM customer;
       id        |   name   | gender | age 
-----------------+----------+--------+-----
 10001           |Taro Tanaka| m       |  31
 10002           |Hanako Nakamura| w       |  44
 10003           |Ichiro Sato| m       |  20
 10004           |Aya Uchida| w       |  18
 10005           |Jiro Takahashi| m       |  56
 10006           |Satoru Nakazato| m       |  34
(6 rows)

Une partie importante de l'écriture de Java

Je laisserai un endroit dont je veux me souvenir en écrivant.

Gestion des exceptions

.java


   public static void main(String[] args) throws Exception {
      try {
          System.out.println("DB access start");
          PostgreSQL_test.dbConnect();
      } catch (Exception e) {
    	  System.out.println("error main()");
    	  e.printStackTrace();
      } finally {
    	  System.out.println("DB access finished");
      }
   }

La gestion des exceptions est décrite par try-catch (-finally).

Dans cet exemple, seul l'emplacement de l'erreur peut être spécifié car il s'agit de ʻException e`, mais il est également possible de saisir instantanément le contenu de l'erreur en modifiant la condition de capture et en écrivant en parallèle.

Par exemple

.java


try {
    file_reader = new FileReader(customer);
    ~
  } catch (FileNotFoundException f) {          //Erreur de recherche de fichier
    System.out.println("cannot find file");
    f.printStackTrace();
  } catch (IOException i) {                    //Erreur d'entrée / sortie de fichier
    System.out.println("in/out error");
    i.printStackTrace();
  } finally {
    try {
      if(file_reader != null) {
        file_reader.close();
      }
    } catch (IOException i) {                  //Erreur lors de la fermeture du fichier
      System.out.println(i);
      i.printStackTrace();
    }
  }

S'il y a un flux

essayer --catch --catch

Il est ramifié en tenant compte des deux.

enfin - essayez - attraper

Seulement détecté.

Il existe de nombreuses exceptions autres que FileNotFoundException et ʻIOException, mais vous pouvez attraper toutes les erreurs avec ʻException (bien que je ne puisse penser qu'à l'emplacement indiqué dans le programme ci-dessus. )

Pour la connexion DB

Initialisation JDBC

Vous devez initialiser le pilote JDBC avant de vous connecter à la base de données.

Dans le cas de PostgreSQL, écrivez comme suit

.java


Class.forName("org.postgresql.Driver").newInstance();

Établissement de la connexion à la base de données / déconnexion de la base de données

De plus, il est nécessaire d'utiliser la méthode ** getConnection ** que la classe ** DriverManager ** a en standard pour établir la connexion DB.

.java


connection = DriverManager.getConnection( <URL> , <USER>, <PASSWORD>);

L'URL s'écrit jdbc: postgresql: // <emplacement>: <numéro de port> / <nom de la base de données>.

Cette fois, je l'ai mis ci-dessous.

endroit numéro de port Nom de la base de données
localhost 5432 customer

Concernant la déconnexion, assurez-vous d'utiliser ** enfin ** au cas où.

.java


rs.close();    //rs est une variable dans l'interface ResultSet

Description de l'instruction SQL

Lors de l'envoi de SQL vers DB, vous devez d'abord créer une instruction à l'aide de la méthode ** createStatement ** définie dans l'interface ** Connection ** (doit être écrite comme un ensemble lors de l'envoi de SQL).

.java


statement = con.createStatement();

Lorsque ce qui précède est terminé, écrivez une requête pour l'instruction SQL

.java


resultset = stm.executeQuery(" <Instruction SQL> ");

Sortie de données

Vous pouvez traiter ligne par ligne avec la méthode ** next () ** de l'interface ** ResultSet **.

.java


while (rs.next()) {
   System.out.println(rs.getInt("<column>"));
     System.out.println(rs.getString("<column>"));
}

Description Java cette fois

PostgreSQL_test.java


package customer;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class PostgreSQL_test {

   public static void main(String[] args) throws Exception {
      try {
          System.out.println("DB access start");
          PostgreSQL_test.dbConnect();
      } catch (Exception e) {
    	  System.out.println("error main()");
    	  e.printStackTrace();
      } finally {
    	  System.out.println("DB access finished");
      }
   }

   private static void dbConnect() throws Exception {
      Connection con = null;
      Statement stm = null;
      ResultSet rs = null;
      int num = 1;

      String url		= "jdbc:postgresql://localhost:5432/customer";
      String user		= "sf213471118";
      String password	= "";          //Aucun mot de passe n'a été défini cette fois

      try {
         Class.forName("org.postgresql.Driver").newInstance();
         con = DriverManager.getConnection(url, user, password);
         stm = con.createStatement();
         rs = stm.executeQuery("SELECT * FROM customer");
         while (rs.next()) {
        	 System.out.println("[" + num + "Article]");
        	 num++;
        	 System.out.println("id     : " + rs.getString("id"));
        	 System.out.println("name   : " + rs.getString("name"));
        	 System.out.println("gender : " + rs.getString("gender"));
        	 System.out.println("age    : " + rs.getInt("age"));
         }
      } catch(SQLException e) {
    	  System.out.println("error dbConnect()");
    	  e.printStackTrace();
      	}finally {
      		try {
      			if ((rs != null)||(stm != null)||(con != null)) {
      				rs.close();
      			}
      		} catch (Exception e) {
      	         e.printStackTrace();
            }
      	}
      }
}

Si vous déplacez ceci, ce qui suit sera retourné.

JavaConsole


DB access start
[1er cas]
id     : 10001         
name   :Taro Tanaka
gender : m  
age    : 31
[2e]
id     : 10002          
name   :Hanako Nakamura
gender : w  
age    : 44
[3e cas]
id     : 10003          
name   :Ichiro Sato
gender : m  
age    : 20
[4e]
id     : 10004          
name   :Aya Uchida
gender : w  
age    : 18
[5e]
id     : 10005          
name   :Jiro Takahashi
gender : m  
age    : 56
[6e]
id     : 10006          
name   :Satoru Nakazato
gender : m  
age    : 34
DB access finished

Si c'était vrai, je voulais afficher le nombre actuel de cas avec rs.next (), mais je n'ai pas bien compris, donc je l'ai sorti avec un soupir. .. ..

~~ Je serais très heureux si quelqu'un pouvait m'apprendre comment le faire ~~

[Ajout] 2019/7/29

Merci pour votre commentaire. Je l'ai corrigé comme suit.

① Recevez le nombre d'essais de la partie boucle avec rs.getRow ()

PostgreSQL_test.java


    while (rs.next()) {
      	 System.out.println("[" + rs.getRow() + "Article]");        /*Partie de correction*/
       	 System.out.println("id     : " + rs.getString("id"));
       	 System.out.println("name   : " + rs.getString("name"));
       	 System.out.println("gender : " + rs.getString("gender"));
       	 System.out.println("age    : " + rs.getInt("age"));
    }

② Correction de l'omission de fermeture

PostgreSQL_test.java


     try {
         if ((rs != null)||(stm != null)||(con != null)) {
             rs.close();
             stm.close();      /*Partie de correction*/
             con.close();      /*Partie de correction*/
          }
      } catch (Exception e) {
                 e.printStackTrace();
        }

Merci encore.

Recommended Posts

Exécutez PostgreSQL sur Java
Exécutez l'applet java sur ubuntu
Exécutez l'application Java EE sur CICS
Exécutez le script shell de tomcat sur java8
Exécutez STS4 sur Mac
Installez PostgreSQL 12 sur Centos8
Compilez et exécutez Java sur la ligne de commande
Exécutez Mecab dans l'environnement Win10 + Eclipse + Java + cmecab-java (version janvier 2020)
Exécuter le traitement sur Ant
Exécutez tiscamera sur Ubuntu 18.04
Installez PostgreSQL 13 sur CentOS 7.5
Comment exécuter Java EE Tutial sur github sur Eclipse
Exécutez kuromoji dans l'environnement Win10 + Eclipse + Java (version janvier 2020)
Gestion des versions Java sur macOS
Installez OpenJDK7 (JAVA) sur ubuntu 14.04
Rétrograder Java sur openSUSE Linux
Réflexion sur la manipulation de chaînes Java
En passant Java Gold SE 8
Exécutez openvpn sur Docker (Windows)
Oracle Java 8 sur Docker Ubuntu
Connectez-vous de Java à PostgreSQL
Installez Java sur WSL Ubuntu 18.04
java bonjour le monde, compilez, exécutez
Mettez Oracle Java 8 dans CircleCI 2
Changer la version java sur CentOS
Exécutez Eclipse CDT sur Ubuntu
Remarque: installez PostgreSQL 9.5 sur Ubuntu 18.04
Exécutez mruby / c sur PSoC 5
Exécuter Java VM avec Web Assembly
Installez java 1.8.0 sur Amazon linux2
Exécuter R à partir d'un processus Java optimisé par Tomcat sur Amazon Linux
1. Exécutez rapidement des modules Web Java sur Google Kubernetes Engine (GKE)
Comment exécuter la commande de copie Postgresql avec des informations de colonne sur Java
Exécutez l'exemple SSE (Server-Sent-Event) sur le docker
Considération sur le cadre de persistance Java 2017 (résumé) -1
Considération sur le cadre de persistance Java 2017 (6) Ebean
Étapes pour exécuter Docker sur Mac
Exécutez puppeteer-core sur Heroku (édition Docker)
[Pour les débutants] Exécutez Selenium sur Java
Obtenez Java Silver dans votre temps de trajet!
Considération sur le framework de persistance Java 2017 (5) Iciql
Exécuter des applications Java dans Azure Batch
Considérations sur le cadre de persistance Java 2017 (7) EclipseLink
Installation de Java Open JDK 8 sur CentOS 7
Java sur AWS Lambda est-il lent?
Exécutez l'AWS CLI sur Docker
Pour exécuter JavaFX sur Docker
Exécutez node.js depuis Android Java (traitement)
Exécuter le fichier de commandes à partir de Java
Hello World avec AWS Lambda + Java
Remarques sur le contrôle du signal en Java
Considération sur le framework de persistance Java 2017 (1)