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
- Codul este disponibil pe SVN-ul Cetei: http://ceata.org/svn/strajer/atelier_programare/JavaMysql/
- Pentru conectarea la baza de date avem nevoie de:
- Un conector, pus la dispoziție de MySQL: lib/mysql-connector-java-5.1.12-bin.jar
- 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:
-
Încărcarea modului MySQL
Class.forName("com.mysql.jdbc.Driver"); -
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); -
Execuția unei comenzi SQL
command = "SELECT * FROM Articole";
stmt = m_connection.prepareStatement(command);
result = stmt.executeQuery(); -
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
- Compilare:
- Curățenie:
- Rularea aplicației în mod text
- Rularea aplicației cu interfață grafică
$ ant
$ ant clean
$ ant run
$ ant gui
Date de test
- Datele de teste se adaugă printr-un script: fii-liber.sh
- Fișierul SQL: fii-liber.sql
mysql -u $USER -p$PASSWORD < 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
- Descrierea structurii tabelei Articole
- Afișarea conținutului tabelei
- Sortarea articolelor după popularitate
- Aflarea celui mai popular articol
SELECT * FROM Articole ORDER BY popularitate ASC;
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:
- Aflarea celui mai popular articol
- Index pe câmpul popularitate
SELECT * FROM Articole ORDER BY popularitate DESC LIMIT 1;
CREATE INDEX indexul_meu ON Articole (popularitate);
Legături utile
- Infrastructura Java (compilator și mașină virtuală) folosită: OpenJDK
- Pagina oficială MySQL
- Documentația oficială a integrării Java-MySQL
- http://www.phpmyadmin.net/home_page/index.php






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
.
găsești aici tot ce trebuie http://www.firebirdsql.org/index.php?op=devel&sub=jdbc&id=faq