JavaRush /Java Blog /Random-IT /Parte 1: Introduzione a SQL
Marat Sadykov
Livello 41

Parte 1: Introduzione a SQL

Pubblicato nel gruppo Random-IT

JDBC. Connessione di un database e creazione di un'applicazione console Java in IntelliJ IDEA

introduzione

Questo articolo apre una breve serie dedicata alle basi dell'interazione con i database in Java e un'introduzione a SQL . Molti programmi sono impegnati a elaborare e modificare le informazioni e a mantenerle aggiornate. Poiché i dati sono una parte molto importante della logica del programma, spesso viene allocato spazio di archiviazione separato. Le informazioni in esso contenute sono strutturate e soggette a particolari regole per garantirne la corretta elaborazione e conservazione. L'accesso e la modifica dei dati avviene utilizzando uno speciale linguaggio di query: SQL (Structured Query Language).
Parte 1. Introduzione a SQL - 1
Un sistema di gestione di database è un software che garantisce l'interazione di vari programmi esterni con dati e servizi aggiuntivi (logging, ripristino, backup, ecc.), anche tramite SQL. Cioè, uno strato software tra i dati e i programmi esterni che funzionano con essi. In questa parte risponderemo alle domande su cos'è SQL, cos'è un server SQL e creeremo il primo programma per interagire con il DBMS.

Tipi di DBMS

Esistono diversi tipi di DBMS in base al modo in cui organizzano l'archiviazione dei dati:
  • Gerarchico. I dati sono organizzati in una struttura ad albero. Un esempio è un file system che parte dalla root del disco e poi cresce con rami di file di diverso tipo e cartelle di diverso grado di nidificazione.
  • Rete. Una modifica della gerarchia, ogni nodo può avere più di un genitore.
  • Orientato agli oggetti. I dati sono organizzati sotto forma di classi/oggetti con i loro attributi e principi di interazione secondo l'OOP.
  • Relazionale. I dati di questo tipo di DBMS sono organizzati in tabelle. Le tabelle possono essere collegate tra loro, le informazioni in esse contenute sono strutturate.
In questa serie di articoli, esamineremo i DBMS relazionali (come quelli più comuni) utilizzando H2 come esempio e creeremo un'applicazione da zero che emuli qualcosa di simile al funzionamento di uno scambio. Domanda: Perché non PostgreSQL, MySQL, MSSQL o Oracle? Risposta: per non essere distratti dai problemi relativi all'installazione di un set separato di programmi. Ulteriore configurazione, creazione di un database, complessità del lavoro in diversi sistemi operativi, versioni. Per lavorare con H2, è necessario eseguire un minimo di azioni. Ma nulla ti impedisce di cambiare l'attuale H2 JDBC in un DBMS relazionale di un altro produttore (cambiano solo la riga dell'indirizzo del server e il nome della classe del driver).

SQL

I programmi esterni generano query al DBMS nel linguaggio di gestione dei dati Structured Query Language. Cos'è SQL e in cosa differisce dai linguaggi di programmazione convenzionali? Una delle caratteristiche di SQL è la dichiaratività. Cioè, SQL è un linguaggio dichiarativo . Ciò significa che quando inseriamo i comandi, ovvero creiamo query al server SQL, descriviamo esattamente cosa vogliamo ottenere e non in che modo. Inviando una richiesta al server SELECT * FROM CUSTOMER(traduzione approssimativa da SQL in russo: "fai una selezione dalla tabella COSTUMER, la selezione è composta da tutte le righe della tabella" ), riceveremo i dati per tutti gli utenti. Non importa come e da dove il server scarica e genera i dati che ci interessano. L'importante è formulare correttamente la richiesta.
  • Cos'è SQL Server e come funziona? L'interazione con il DBMS avviene secondo il principio client-server. Alcuni programmi esterni inviano una richiesta sotto forma di operatori e comandi in linguaggio SQL, il DBMS la elabora e invia una risposta. Per semplicità, supponiamo che SQL Server = DBMS.
Se sai guidare una marca di auto, molto probabilmente sarai in grado di guidarne altre senza problemi. Le basi della guida sono le stesse ovunque, tranne che per piccoli dettagli. Lo stesso vale per i server SQL di diversi produttori: ognuno di essi ha la propria versione di SQL, ma soddisfa gli standard specificati (SQL92, SQL2003...). Utilizzeremo operatori e comandi all'interno del framework SQL92. Le istruzioni SQL di base sono suddivise nei seguenti gruppi:
  • Data Definition Language ( DDL ) – definizioni dei dati. Creazione della struttura del database e dei suoi oggetti;
  • Data Manipulation Language ( DML ) – interazione reale con i dati: inserimento, cancellazione, modifica e lettura;
  • Transaction Control Language ( TCL ) – gestione delle transazioni;
  • Data Control Language ( DCL ) – gestione dei diritti di accesso ai dati e alle strutture del database.
In una serie di articoli esamineremo i primi tre gruppi, prestando particolare attenzione al DML.

JDBC

Negli anni '80 del secolo scorso i personal computer del tipo PC XT/AT conquistarono il mercato. Ciò era in gran parte dovuto alla modularità del loro design. Ciò significa che l'utente potrebbe facilmente modificare l'uno o l'altro componente del suo computer (processore, scheda video, dischi, ecc.). Questa meravigliosa proprietà è stata preservata fino ad oggi: cambiamo la scheda video e aggiorniamo il driver (a volte si aggiorna anche da solo, automaticamente). Molto spesso, con tali manipolazioni non accade nulla di male e i programmi esistenti continueranno a funzionare con il sistema aggiornato senza reinstallazione. Lo stesso vale per lavorare in Java con un DBMS. Per standardizzare il lavoro con i server SQL, l'interazione con esso può essere eseguita tramite un unico punto: JDBC (Java DataBase Connectivity). È un'implementazione del pacchetto java.sql per lavorare con un DBMS. I produttori di tutti i server SQL più diffusi rilasciano driver JDBC per loro. Considera il diagramma qui sotto. L'applicazione utilizza istanze di classi da java.sql . Successivamente passiamo i comandi necessari per recuperare/modificare i dati. Successivamente, java.sql interagisce con il DBMS tramite il driver jdbc e ci restituisce il risultato finale. Parte 1. Introduzione a SQL - 2 Per passare a un DBMS di un altro produttore, spesso è sufficiente modificare JDBC ed eseguire le impostazioni di base. Le restanti parti del programma non cambiano.

Primo programma

Passiamo alla parte pratica. Creiamo un progetto Java utilizzando JetBrains IntelliJ IDEA IDE . Tieni presente che la Ultimate Edition contiene uno strumento meraviglioso per lavorare con SQL e database: Data Grip . Tuttavia, è a pagamento per la maggior parte degli utenti. Pertanto, per scopi didattici possiamo utilizzare solo la IntelliJ IDEA Community Edition disponibile pubblicamente . COSÌ:
  1. Avvia l'IDE e crea un nuovo progetto:
    Parte 1. Introduzione a SQL - 3

  2. Seleziona un progetto Java, indica la versione dell'SDK (nell'esempio JDK8, ma non è fondamentale):
    Parte 1. Introduzione a SQL - 4

  3. Nel passaggio successivo, seleziona l'applicazione console come tipo :
    Parte 1. Introduzione a SQL - 5

  4. Indichiamo il nome del progetto , il pacchetto e la sua posizione su disco (ho creato una directory separata appositamente per questo):
    Parte 1. Introduzione a SQL - 6

  5. Mettiamo da parte per un attimo l'IDE e scarichiamo da www.h2database.com il file JDBC necessario per lavorare con il DBMS H2 (download platform independent ZIP):
    Parte 1. Introduzione a SQL - 7

  6. Entriamo all'interno del file scaricato (a noi interessa il file jar lungo il percorso h2\bin , che ci servirà in seguito, copiatelo):
    Parte 1. Introduzione a SQL - 8

  7. Ritorniamo all'IDE e creiamo le directory nella radice del progetto: db , dove verranno posizionati i file con i dati DBMS; lib – ecco la libreria JDBC JAR:
    Parte 1. Introduzione a SQL - 9

  8. Sposta il file jar dal passaggio 6 nella directory lib e aggiungilo al progetto come libreria:
    Parte 1: Introduzione a SQL - 10

  9. Rinominiamo il file Java in src/sql/demo in StockExchange.java (nel caso te ne fossi dimenticato, emuleremo un semplice “exchange”), cambiamo il suo contenuto ed eseguiamo:
    Parte 1: Introduzione a SQL - 11
Ora possiamo connetterci e disconnetterci dal DBMS. Ogni passaggio si riflette nella console. Quando ci si connette per la prima volta al DBMS, viene creato un file di database stockExchange.mv.db .

Analisi del codice

Il codice vero e proprio:
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 !");
        }
    }
}

Blocco costante:

  1. DB_Driver : qui abbiamo definito il nome del driver, che può essere trovato, ad esempio, cliccando sulla libreria collegata ed espandendo la sua struttura nella directory lib del progetto corrente.
  2. DB_URL : indirizzo del nostro database. È costituito da dati separati da due punti:
  3. Protocollo=jdbc
  4. Fornitore (produttore/nome) DBMS=h2
  5. La posizione del DBMS, nel nostro caso il percorso del file (c:/JavaPrj/SQLDemo/db/stockExchange). Per i DBMS di rete, qui vengono inoltre indicati i nomi o gli indirizzi IP dei server remoti, i numeri di porta TCP/UDP e così via.

Elaborazione degli errori:

I metodi di chiamata nel nostro codice potrebbero restituire errori a cui dovresti prestare attenzione. In questa fase li riportiamo semplicemente in console. Tieni presente che gli errori quando si lavora con un DBMS sono spesso SQLException .

Logica di funzionamento:

  1. Class.forName (DB_Driver) – ci assicuriamo che sia disponibile il driver JDBC corrispondente (che abbiamo precedentemente scaricato e installato).
  2. DriverManager.getConnection (DB_URL): stabilisce una connessione DBMS. Utilizzando l'indirizzo passato, JDBC stesso determinerà il tipo e la posizione del nostro DBMS e restituirà una connessione, che possiamo utilizzare per comunicare con il database.
  3. Connection.close() – chiude la connessione al DBMS e termina di lavorare con il programma.
Nella parte successiva della serie conosceremo gli operatori DDL e i tipi di dati SQL, creeremo anche la struttura iniziale del nostro database e lo riempiremo di tabelle. Seconda parte Terza parte
Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION