Sunteți pe pagina 1din 8

Laborator 12

Conectarea cu JDBC la BD MySQL


12.1 Ce este JDBC ?

JDBC sau Java Data Base Connectivity este un API care permite programarea in Java a accesului
la Bazele de date. Acestea pot fi create intr-unul dintre sistemele de gestiune a bazelor de date
(SGBD) urmatoare : Oracle , MySQL, Access, FoxPro, DB2

In functie de tipul SGBD-ului, dar si de tipul sistemului de operare (pe 32 de biti sau pe 64 de
biti), aceast acces se programeaza in mod diferit.

Astfel :
- Daca SGBD-ul este Oracle sau MySQL conexiunea se face direct prin driver-ul JDBC
- Daca baza de date este creata cu un SGBD mai vechi ca tehnologie (Access, DB2, FoxPro),
conexiunea se face cu ajutorul driver-ului ODBC (Open Data Base Connectivity) care
transmite mai departe connexiunea JDBC-ului

12.2. Conexiunea cu o BD

Procesul de conectare la o BD are doua etape :

1. Incarcarea in memorie a driver-ului corespunzator (se incarca clasa care implementeaza acel
driver)

2. Realizarea conexiunii propriu-zise


- se importa pachetele de clase java.sql.* si javax.sql.*
- se specifica in cod locatia BD astfel :

jdbc : sub-protocol : identificator_baza_de_date

unde
sub-protocol denumeste tipul de driver (oracle, odbc, db2)
identificator_baza_de_date este format din numele host al calculatorului pe care se afla BD,
numarul portului de comunicatie, calea catre BD si numele acesteia

Exemple :
Daca BD este in ORACLE :
jdbc:oracle:myhost:1521:testdb
Daca BD este in MySQL :
jdbc:mysql://localhost:3306/testdb
Daca BD este in MySQL Server:
jdbc:odbc:testdb

Obs. Versiunea curenta de JDBC este 4.0.


Clasele necesare pentru conexiunea cu BD sunt :

java.sql.DriverManager (pt conectarea aplicatiei la BD)


java.sql.Connection (pentru conectare pe baza de user si parlola)
java.sql.Statement (pt interogari SQL)
java.sql.ResultSet (pt executia interogarii)
java.sql.DataSource

12.3. Descarcarea driver-ului JDBC pt MySQL

Se merge la adresa

http://dev.mysql.com/downloads/connector/j

si se descarca connectorul pt Platforma independent deoarece Windows poate fi pe 32 sau 64 de


biti. Acesta este un fisier .zip care se va dezarhiva. Din aceasta arhiva, fisierul care ne intereseaza
si pe care il vom folosi ulterior este
mysql-connector-java-5.1.40-bin.jar

12.4. Realizarea BD

Pentru crearea bazei de date puteti sa va ajutati de instrumentele din XAMPP. Daca aveti XAMPP
instalat, lansati-l si porniti cele doua servere Appache si MySQL (ATENTIE la configurarile de
securitate din config.inc.php pentru a seta o parola pe ROOT !! altfel calculatorul dvs poate fi
atacat din afara prin porturile deschise de aceste servere)

Creati o BD numita testdb asa cu doua tabele Student si Note

Student

CNP
Nume
Prenume
An
Specializare
Tel

Note
CNP
Nota1
Nota2
Nota3
In tabele CNP trebuie facut cheie primara, deoarece astfel este identificat in mod unic un
student. Pentru aceasta afisati structura BD si in structura fiecarei tabele se marcheaza CNP ca si
cheie primara (aceasta va aparea subliniata) :
Inserati inregistrari in tabelele dvs folosind comanda Insert. In campul Media nu introduceti
nimic deocamdata.

Dup ace ati introdus date, creati relatia intre cele doua tabele astfel: in partea stanga dati click
pe numele BD (testdb). Din meniu alegeti More/Designer. Trebuie s ava apara cele doua tabele si
campurile lor. Conectati cele doua tabele folosind iconul relational asa cum se arata in imaginile
urmatoare. Relatia va fi de tipul unul-la-mai-multi, iar restrictiile de integritate sunt ca atunci
cand se sterge ceva in tabela mama (un student) sa nu se poata realiza stergerea daca exista
note in tabela copil) iar cand se actualizeaza ceva in tabela student, sa fim obligati sa actualizam
si in tabela note.
In acest moment, baza dvs de date este pregatita pentru interfatarea cu aplicatia Java.

12.5. Realizarea proiectului Java

Deschideti Eclipse si creati un nou proiect numit testJDBC.

In acest proiect adaugati o noua clasa numita Driver (bifati optiunea pt includerea functiei main()
in clasa). Adaugati proiectului driver-ul descarcat mai devreme (fisierul .jar) astfel :
 In proiect adaugati un nou folder numit lib (prin click dreapta pe numele proiectului)
In acest folder adaugati fisierul mysql-connector-java-5.1.40-bin.jar (prin drag and drop)
 Click dreapta pe numele proiectului testJDBC/Properties/Java Build Path/Add JARs (din
eticheta Libraries) si alegeti fisierul .jar din lib, apoi apasati OK.
Acum putem trece la scrierea codului Java (aveti grija sa inlocuiti pass cu parola dvs :

import java.sql.*;

public class Driver {

/**
* @param args
*/
public static void main(String[] args) {

try{
//Realizarea conexiunii cu BD
Connection myConn =
DriverManager.getConnection("jdbc:mysql://localhost:3306/testdb", "root", "pass");
//Crearea unei interogari
Statement myStmt = myConn.createStatement();
//Executia unei interogari
ResultSet myRs = myStmt.executeQuery ("select * from student");
//Procesarea rezultatelor interogarii
while (myRs.next())
{ System.out.println(myRs.getString("Nume")+","+
myRs.getString("Prenume")+","+myRs.getInt("An"));}

}catch (Exception e){


e.printStackTrace();

Ce se afiseaza ? Realizati si alte interogari pe cele doua tabele Student si Note.

12.6 Inserarea datelor intr-o BD MySQL

Realizati conexiunea cu BD asa cum s-a aratat in laboratorul precedent.

Realizati un nou proiect in care sa introduceti urmatorul cod:

import java.sql.*;

public class Driver {

/**
* @param args
*/
public static void main(String[] args) {

try{
//Realizarea conexiunii cu BD
Connection myConn =
DriverManager.getConnection("jdbc:mysql://localhost:3306/testdb", "root", "pass");
//Crearea unei interogari
Statement myStmt = myConn.createStatement();

//Executia unei interogari

String sql = "insert into student(CNP,Nume,Prenume, An, Specializare, Media)


values ('1920227500034','Roman', 'Alexandru', '2', 'Electronica', '10.00')";
myStmt.executeUpdate(sql);

System.out.println ("Insert complete");

}catch (Exception e){


e.printStackTrace();

Compilati si executati. Daca totul a fost corect, singurul mesaj afisat este
« Insert complete ». Vizualizati noua inregistrare inserata in baza de date.

12.7 Actualizarea datelor intr-o BD MySQL

Prin codul urmator se modifica numele unei personae a carui CNP este dat (dati un CNP ce se
afla deja in BD)

import java.sql.*;

public class Driver {

/**
* @param args
*/
public static void main(String[] args) {

try{
//Realizarea conexiunii cu BD
Connection myConn =
DriverManager.getConnection("jdbc:mysql://localhost:3306/testdb", "root", "pass");

//Crearea unei interogari


Statement myStmt = myConn.createStatement();

//Executia unei interogari


String sql = "update student set Nume = 'Ionescu' where CNP =
'2900624400056'";
myStmt.executeUpdate(sql);
System.out.println ("Update complete");

}catch (Exception e){


e.printStackTrace();
}
}
}

12.8 Stergerea datelor intr-o BD MySQL

import java.sql.*;

public class Driver {

/**
* @param args
*/
public static void main(String[] args) {

try{
//Realizarea conexiunii cu BD
Connection myConn =
DriverManager.getConnection("jdbc:mysql://localhost:3306/testdb", "root", "pass");
//Crearea unei interogari
Statement myStmt = myConn.createStatement();
//Executia unei interogari
String sql = "delete from student where CNP='1920227500034'";

myStmt.execute(sql);
System.out.println ("Delete complete");
}catch (Exception e){
e.printStackTrace();

S-ar putea să vă placă și