Java și MySQL

Acest articol este o introducere în integrarea dintre o aplicație Java și o bază de date MySQL.

Java este un limbaj de programare orientat pe obiecte și foarte popular iar MySQL este un sistem liber de baze de date. Pentru informații suplimentare vezi secțiunea legături utile. 

Motivație și obiective

Bazele de date sunt folosite la scară largă chiar și atunci când nu este imperios necesar, iar mulți începători de Java întâmpină probleme la integrarea dintre aplicația lor și sistemul de baze de date MySQL. Acest articol vrea să-i ajute și să ofere un model de interoperabilitate între utilizator, prin interfața grafică implementată în Swing și baza de date. Codul scris ca exemplu este liber, simplu și robust.

În urma parcurgerii acestui articol și a codului aferent vei ști:

  • să creezi programatic o tabelă MySQL, dintr-un script
  • să te conectezi la MySQL, folosind diverși parametri
  • să execuți comenzi MySQL și să prelucrezi rezultatul acestora
  • să afișezi într-o interfață grafică informații întoarse de comenzi MySQL
  • să compilezi "profesionist" o aplicație Java 

Detalii de implementare

  1. Un conector, pus la dispoziție de MySQL: lib/mysql-connector-java-5.1.12-bin.jar
  2. Legarea aplicației noatre la conector; conectorul este un jar (Java Archive) și este adăugat în CLASSPATH (variabila analizată mașina virtuală de Java pentru rezolvarea simbolurilor). Implementarea se găsește în scriptul de compilare.
  • Pașii algoritmului sunt:

  1. Încărcarea modului MySQL

    Class.forName("com.mysql.jdbc.Driver");

  2. Conectarea la baza de date, folosind adresa serverului (localhost dacă este un server local), nume utilizator și parolă

    m_connection = DriverManager.getConnection(url, user, pass);

  3. Execuția unei comenzi SQL

    command = "SELECT * FROM Articole";
    stmt = m_connection.prepareStatement(command);
    result = stmt.executeQuery();

  4. Prelucrarea rezultatului întors de o comandă

    while (result.next()){
    // și sunt coloane în tabelă
    String id = result.getString("id");
    String titlu = result.getString("titlu");
    String popularitate = result.getString("popularitate");
    System.out.println(id + Constants.SEPAR + titlu + Constants.SEPAR + popularitate);
    }

  • Spor la studiat codul! 

Compilarea aplicației

  • Pentru compilarea fișierelor surse am scris un fișier ant build.xml
  1. Compilare:
  2. $ ant

  3. Curățenie:
  4. $ ant clean

  5. Rularea aplicației în mod text
  6. $ ant run

  7. Rularea aplicației cu interfață grafică
  8. $ ant gui

Date de test

  • Datele de teste se adaugă printr-un script: fii-liber.sh
  • mysql -u $USER -p$PASSWORD < fii-liber.sql

  • Fișierul SQL: fii-liber.sql
  • CREATE DATABASE IF NOT EXISTS fiiliber_db;
    USE fiiliber_db;

    DROP TABLE IF EXISTS `Articole`;
    CREATE TABLE `Articole` (
    `id` int(10) unsigned NOT NULL auto_increment,
    `titlu` varchar(45) NOT NULL,
    `popularitate` int(10) unsigned NOT NULL,
    PRIMARY KEY (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=latin1;

    INSERT INTO `Articole` (`titlu`,`popularitate`) VALUES
    ('OpenShot', 7),
    ('FLAC', 3),
    ('Eclipse IDE', 10),
    ('Vara 2010 Ceata', 5),
    ('Hacherii GNU', 21),
    ('Ghid introductiv in GNU Emacs', 15);

Imagini

  • Afișarea tabelelor din baza de date
  • SHOW TABLES;

  • Descrierea structurii tabelei Articole
  • DESCRIBE Articole;

  • Afișarea conținutului tabelei
  • SELECT * FROM Articole;

  • Sortarea articolelor după popularitate
  • SELECT * FROM Articole ORDER BY popularitate ASC;

  • Aflarea celui mai popular articol
  • SELECT * FROM Articole where popularitate = (select MAX(popularitate) FROM Articole);

Optimizări

Baza de date și interogările de mai sus nu sunt optimizate. Mulțumim lui Doru Ilași pentru optimizări:

  1. Aflarea celui mai popular articol
  2. SELECT * FROM Articole ORDER BY popularitate DESC LIMIT 1;

  3. Index pe câmpul popularitate
  4. CREATE INDEX indexul_meu ON Articole (popularitate);

Legături utile

Etichete:

Comentarii

o sa imi fac timp sa contribui un articol introductiv jdbc si firebird

ar trebui să te autentifici/înregistrezi înainte, ca să știm și noi cu cine vorbim .