JavaRush /Blog Java /Random-FR /Partie 1 : Introduction à SQL
Marat Sadykov
Niveau 41

Partie 1 : Introduction à SQL

Publié dans le groupe Random-FR

JDBC. Connexion d'une base de données et création d'une application console Java dans IntelliJ IDEA

Introduction

Cet article ouvre une courte série consacrée aux bases de l'interaction avec les bases de données en Java et à une introduction à SQL . De nombreux programmes sont occupés à traiter et à modifier les informations et à les maintenir à jour. Étant donné que les données constituent une partie très importante de la logique du programme, un stockage séparé leur est souvent alloué. Les informations qui y sont contenues sont structurées et soumises à des règles particulières pour garantir un traitement et un stockage corrects. Les données sont accessibles et modifiées à l'aide d'un langage de requête spécial - SQL (Structured Query Language).
Partie 1. Introduction à SQL - 1
Un système de gestion de base de données est un logiciel qui assure l'interaction de divers programmes externes avec des données et des services supplémentaires (journalisation, récupération, sauvegarde, etc.), notamment via SQL. C'est-à-dire une couche logicielle entre les données et les programmes externes qui les utilisent. Dans cette partie, nous répondrons aux questions sur ce qu'est SQL, ce qu'est un serveur SQL et créerons le premier programme pour interagir avec le SGBD.

Types de SGBD

Il existe plusieurs types de SGBD selon la manière dont ils organisent le stockage des données :
  • Hiérarchique. Les données sont organisées dans une structure arborescente. Un exemple est un système de fichiers qui démarre à la racine du disque et se développe ensuite avec des branches de fichiers de différents types et des dossiers avec différents degrés d'imbrication.
  • Réseau. Une modification de la hiérarchie, chaque nœud peut avoir plus d'un parent.
  • Orienté objet. Les données sont organisées sous forme de classes/objets avec leurs attributs et principes d'interaction selon la POO.
  • Relationnel. Les données de ce type de SGBD sont organisées en tableaux. Les tableaux peuvent être liés les uns aux autres, les informations qu'ils contiennent sont structurées.
Dans cette série d'articles, nous examinerons les SGBD relationnels (les plus courants) en utilisant H2 comme exemple et créerons une application à partir de zéro qui émule quelque chose de similaire au fonctionnement d'un échange. Question : Pourquoi pas PostgreSQL, MySQL, MSSQL ou Oracle ? Réponse : Afin de ne pas se laisser distraire par les problèmes d'installation d'un ensemble distinct de programmes. Configuration ultérieure, création d'une base de données, subtilités du travail dans différents systèmes d'exploitation, versions. Pour travailler avec H2, vous devez effectuer un minimum d'actions. Mais rien ne vous empêche de changer le JDBC H2 actuel en un SGBD relationnel d'un autre fabricant (seules la ligne d'adresse du serveur et le nom de la classe du pilote changent).

SQL

Les programmes externes génèrent des requêtes vers le SGBD dans le langage de gestion de données Structured Query Language. Qu’est-ce que SQL et en quoi diffère-t-il des langages de programmation conventionnels ? L'une des fonctionnalités de SQL est le caractère déclaratif. Autrement dit, SQL est un langage déclaratif . Cela signifie que lors de la saisie de commandes, c'est-à-dire lors de la création de requêtes sur le serveur SQL, nous décrivons exactement ce que nous voulons obtenir, et non de quelle manière. En envoyant une requête au serveur SELECT * FROM CUSTOMER(traduction approximative de SQL vers le russe : « faites une sélection dans la table COSTUMER, la sélection comprend toutes les lignes de la table » ), nous recevrons des données pour tous les utilisateurs. Peu importe comment et d’où le serveur télécharge et génère les données qui nous intéressent. L'essentiel est de formuler correctement la demande.
  • Qu'est-ce que SQL Server et comment ça marche ? L'interaction avec le SGBD s'effectue selon le principe client-serveur. Un programme externe envoie une requête sous forme d'opérateurs et de commandes en langage SQL, le SGBD la traite et envoie une réponse. Pour plus de simplicité, supposons que SQL Server = SGBD.
Si vous pouvez conduire une marque de voiture, vous pourrez probablement en conduire d’autres sans aucun problème. Les bases de la conduite sont les mêmes partout, à de petits détails près. Il en va de même pour les serveurs SQL de différents fabricants : chacun d'entre eux possède sa propre version de SQL, mais elle répond aux normes spécifiées (SQL92, SQL2003...). Nous utiliserons des opérateurs et des commandes dans le framework SQL92. Les instructions SQL de base sont divisées dans les groupes suivants :
  • Langage de définition de données ( DDL ) – définitions de données. Création de la structure de la base de données et de ses objets ;
  • Langage de manipulation de données ( DML ) – interaction réelle avec les données : insertion, suppression, modification et lecture ;
  • Transaction Control Language ( TCL ) – gestion des transactions ;
  • Data Control Language ( DCL ) – gestion des droits d’accès aux structures de données et de bases de données.
Dans une série d'articles, nous examinerons les trois premiers groupes, en accordant une attention particulière au DML.

JDBC

Dans les années 80 du siècle dernier, les ordinateurs personnels de type PC XT/AT ont conquis le marché. Cela était dû en grande partie à la modularité de leur conception. Cela signifie que l'utilisateur pourrait assez facilement changer l'un ou l'autre composant de son ordinateur (processeur, carte vidéo, disques, etc.). Cette merveilleuse propriété a été préservée jusqu'à ce jour : nous changeons la carte vidéo et mettons à jour le pilote (parfois il se met même à jour automatiquement). Le plus souvent, rien de grave ne se produit avec de telles manipulations et les programmes existants continueront à fonctionner avec le système mis à jour sans réinstallation. Il en va de même pour travailler en Java avec un SGBD. Pour standardiser le travail avec les serveurs SQL, l'interaction avec ceux-ci peut être effectuée via un seul point - JDBC (Java DataBase Connectivity). Il s'agit d'une implémentation du package java.sql pour travailler avec un SGBD. Les fabricants de tous les serveurs SQL populaires publient des pilotes JDBC pour eux. Considérez le diagramme ci-dessous. L'application utilise des instances de classes de java.sql . Nous passons ensuite les commandes nécessaires pour récupérer/modifier les données. Ensuite, java.sql interagit avec le SGBD via le pilote jdbc et nous renvoie le résultat final. Partie 1. Introduction à SQL - 2 Pour passer à un SGBD d'un autre fabricant, il suffit souvent de changer de JDBC et d'effectuer les réglages de base. Les autres parties du programme ne changent pas.

Premier programme

Passons à la partie pratique. Créons un projet Java à l'aide de l'IDE JetBrains IntelliJ IDEA . Notez que l'Ultimate Edition contient un merveilleux outil pour travailler avec SQL et les bases de données - Data Grip . Cependant, il est payant pour la plupart des utilisateurs. Ainsi, à des fins éducatives, nous ne pouvons utiliser que l' édition communautaire IntelliJ IDEA disponible au public . Donc:
  1. Lancez l'EDI et créez un nouveau projet :
    Partie 1. Introduction à SQL - 3

  2. Sélectionnez un projet Java, indiquez la version du SDK (dans l'exemple JDK8, mais ce n'est pas critique) :
    Partie 1. Introduction à SQL - 4

  3. À l'étape suivante, sélectionnez l'application console comme type :
    Partie 1. Introduction à SQL - 5

  4. Nous indiquons le nom du projet , le package et son emplacement sur le disque (j'ai créé un répertoire séparé spécifiquement pour cela) :
    Partie 1. Introduction à SQL - 6

  5. Laissons de côté l'EDI pendant une minute et téléchargeons depuis www.h2database.com le fichier JDBC nécessaire pour travailler avec le SGBD H2 (ZIP indépendant de la plateforme de téléchargement) :
    Partie 1. Introduction à SQL - 7

  6. Nous entrons dans le fichier téléchargé (nous nous intéressons au fichier jar le long du chemin h2\bin , dont nous aurons besoin plus tard, copiez-le) :
    Partie 1. Introduction à SQL - 8

  7. Nous retournons à l'EDI et créons des répertoires à la racine du projet : db , où se trouveront les fichiers contenant les données du SGBD ; lib – voici la bibliothèque JDBC JAR :
    Partie 1. Introduction à SQL - 9

  8. Déplacez le fichier jar de l'étape 6 vers le répertoire lib et ajoutez-le au projet en tant que bibliothèque :
    Partie 1 : Introduction à SQL - 10

  9. Renommons le fichier java en src/sql/demo en StockExchange.java (au cas où vous l'auriez oublié, nous allons émuler un simple « échange »), modifions son contenu et exécutons :
    Partie 1. Introduction à SQL - 11
Nous pouvons désormais nous connecter et nous déconnecter du SGBD. Chaque étape est reflétée dans la console. Lors de votre première connexion au SGBD, un fichier de base de données stockExchange.mv.db est créé .

Analyse de code

Le code réel :
package sql.demo;

import java.sql.*;

public class StockExchangeDB {
    // Блок объявления констант
    public static final String DB_URL = "jdbc:h2:/c:/JavaPrj/SQLDemo/db/stockExchange";
    public static final String DB_Driver = "org.h2.Driver";

    public static void main(String[] args) {
        try {
            Class.forName(DB_Driver); //Проверяем наличие JDBC драйвера для работы с БД
            Connection connection = DriverManager.getConnection(DB_URL);//соединениесБД
            System.out.println("Соединение с СУБД выполнено.");
            connection.close();       // отключение от БД
            System.out.println("Отключение от СУБД выполнено.");
        } catch (ClassNotFoundException e) {
            e.printStackTrace(); // обработка ошибки  Class.forName
            System.out.println("JDBC драйвер для СУБД не найден!");
        } catch (SQLException e) {
            e.printStackTrace(); // обработка ошибок  DriverManager.getConnection
            System.out.println("Ошибка SQL !");
        }
    }
}

Blocage constant :

  1. DB_Driver : Nous avons défini ici le nom du pilote, que l'on peut retrouver par exemple en cliquant sur la bibliothèque connectée et en développant sa structure dans le répertoire lib du projet en cours.
  2. DB_URL : Notre adresse de base de données. Se compose de données séparées par deux points :
  3. Protocole=jdbc
  4. Fournisseur (fabricant/nom) SGBD=h2
  5. L'emplacement du SGBD, dans notre cas le chemin d'accès au fichier (c:/JavaPrj/SQLDemo/db/stockExchange). Pour les SGBD réseau, les noms ou adresses IP des serveurs distants, les numéros de port TCP/UDP, etc. sont également indiqués ici.

Traitement des erreurs :

L’appel de méthodes dans notre code peut renvoyer des erreurs auxquelles vous devez prêter attention. A ce stade nous les signalons simplement dans la console. Notez que les erreurs lorsque vous travaillez avec un SGBD sont le plus souvent des SQLException .

Logique de fonctionnement :

  1. Class.forName (DB_Driver) – nous nous assurons que le pilote JDBC correspondant est disponible (que nous avons préalablement téléchargé et installé).
  2. DriverManager.getConnection (DB_URL) – établit une connexion SGBD. En utilisant l'adresse transmise, JDBC déterminera lui-même le type et l'emplacement de notre SGBD et renverra une connexion, que nous pourrons utiliser pour communiquer avec la base de données.
  3. connection.close() – fermez la connexion au SGBD et terminez de travailler avec le programme.
Dans la prochaine partie de la série, nous nous familiariserons avec les opérateurs DDL et les types de données SQL, et créerons également la structure initiale de notre base de données et la remplirons de tables. Deuxième partie Troisième partie
Commentaires
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION