Cuprins
Java Ca limbaj multifuncțional, în afară de diferitele funcționalități pe care le putem realiza, ne permite, de asemenea, să lucrăm cu persistența datelor, pentru aceasta putem face conexiune cu diferitele motoare ale Baze de date care există pe piață.A Bază de date Poate fi ceva la fel de simplu ca un sistem cheie-valoare într-un fișier text simplu, precum și soluții mai complexe și moderne, cum ar fi cele non-relaționale, ceea ce face ca posibilitatea de a dezvolta diferite scheme de conexiune să fie o caracteristică obligatorie.
JDBC sunt un set de clase care permit Java stabilim conexiuni cu motoarele bazei de date, acest lucru ne permite să obținem rezultatele interogărilor într-un obiect numit Setul de rezultate.
Deoarece fiecare motor este diferit, este probabil ca Setul de rezultate pe care îl primim îi este deosebit, de aceea nu ne este convenabil să ne structurăm aplicația în jurul obiectului menționat.
Pentru a rezolva această problemă putem folosi ceea ce se numește a obiect de acces, cu care putem gestiona diferitele forme ale noastre Setul de rezultate facilitând implementarea aplicației dvs. în cadrul programului nostru și astfel dezvoltatorul are mai puține probleme.
Modelul de design DAO Obiect de acces la date sau DAO Este un model de proiectare care colectează ceea ce explicasem în punctul anterior, acest lucru ne cere să creăm o clasă de acces la proprietățile noastre Bază de date. Pentru a face acest lucru, trebuie să facem întreaga lucrare JDBC și controlerul care ne permite să ne conectăm cu motorul particular pe care îl dorim, în plus, trebuie să realizăm implementarea logică pe care o explicăm pentru a evita dependența de anumite componente care ar face doar dificilă migrarea noastră către un motor de baze de date diferit.
Primul lucru pe care trebuie să-l facem pentru a construi o conexiune JDBC este să identificăm care este motorul la care dorim să facem conexiunea și apoi să obținem clasele necesare pentru conexiunea menționată, în acest caz vom face o conexiune MySQL, acest motor este ușor, gratuit și multiplatform, deci îl putem instala atât în Windows, Linux sau Mac.
Conector / J este ansamblul de clase oferite de echipa de dezvoltare a MySQL, cu ei putem face JDBC lucrează împreună cu asta Baze de date relațional, pentru a-l încorpora în proiectul nostru trebuie să urmăm pașii următori.
1- Trebuie să descărcăm fișierul corespunzător platformei noastre Windows sau pentru alții de pe site-ul oficial al MySQL În următorul link.
MARI
3- Acum vom continua să testăm dacă totul funcționează corect pe computerul nostru, pentru aceasta vom crea un mic cod în care vom vedea dacă conector / J a fost încărcat cu succes în sistemul nostru, pentru aceasta vom folosi următorul cod:
public class ConnectionTest {public static void main (String [] args) {try {Class c = Class.forName ("com.mysql.jdbc.Driver"); System.out.println ("Clasa încărcată:" + c.getName ()); } catch (ClassNotFoundException ex) {System.err.println (ex); }}}
4- Pentru a rula acest exemplu, trebuie să includem dependența, se recomandă să avem .borcan în aceeași cale a fișierului nostru TestConexion.java. Cu aceasta acoperită vom continua să compilăm fișierul, deschidem o consolă și cu instrucțiunile javac și adăugând .borcan la calea clasei în timpul rulării cu comanda -cp O putem face, să vedem linia de comandă:
javac -cp mysql-connector-java-5.1.34-bin.jar ConnectionTest.java
5- În cele din urmă, pentru a executa fișierul nostru, trebuie doar să executăm următoarea instrucțiune:
java -cp mysql-connector-java-5.1.34-bin.jar TestConnection
Dacă avem un rezultat de genul următor în consola noastră, putem începe să lucrăm cu operațiuni la Baze de date:
MARI
CREAȚI TABELUL DACĂ NU EXISTĂ „utilizatori” (
`id` bigint (20) NOT NULL AUTO_INCREMENT,
`name` varchar (255) NOT NULL,
data „date` NOT NULL,
`state` int (11) NOT NULL,
CHEIE PRIMARĂ („id”)
) MOTOR = InnoDB DEFAULT CHARSET = latin1 AUTO_INCREMENT = 3;
INSERAȚI ÎN "utilizatori" ("id", "nume", "dată", "stare") VALORI
(1, „Utilizator 1”, „01-01-2015”, 1),
(2, „Utilizatorul 2”, „01-01-2015”, 1);
Acum, în următorul cod de Java ne vom concentra pe stabilirea legăturii cu Bază de date, pentru aceasta cu un încercați blocul de captură Vom confirma că este eficient și fără erori, atunci dacă conexiunea a fost stabilită, vom imprima un mesaj de succes, să vedem:
import java.sql.Connection; import java.sql.DriverManager; public class ConnectionTest {private static final String path = "jdbc: mysql: // localhost"; private static final String user = "utilizatorul nostru"; private static final String password = "parola noastră"; public static void main (String [] args) {try {Connection con = DriverManager.getConnection (cale, utilizator, parolă); System.out.println ("Conexiune reușită"); } catch (Exception e) {e.printStackTrace (); }}}
Din acest cod putem vedea că trebuie să importăm două biblioteci din pachet java.sql, unul este Conexiune care se ocupă de gestionarea tuturor activităților pentru a putea comunica cu baza de date și cealaltă este Manager de dispozitiv care este responsabil pentru furnizarea modului în care vom comunica cu acesta. Dacă am urmat corect pașii, ar trebui să vedem următorul mesaj când rulăm exemplul în consolă:
MARI
import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; public class ConnectionTest {private static final String path = "jdbc: mysql: // localhost / test"; private static final String user = "utilizatorul nostru"; private static final String password = "parola noastră"; public static void main (String [] args) {try {Connection con = DriverManager.getConnection (cale, utilizator, parolă); Declarație interogare = con.createStatement (); System.out.println ("Conexiune reușită"); ResultSet result = query.executeQuery ("SELECT * FROM utilizatori"); while (result.next ()) {String name = result.getString ("nume"); Data șirului = result.getString („data”); System.out.println ("Nume:" + nume + "Data înregistrării:" + dată); } result.close (); query.close (); con.close (); } catch (Exception e) {e.printStackTrace (); }}}
Este important să menționăm acest lucru în atributul nostru traseu L-am modificat și numele fișierului Bază de date apel Test unde trebuie să creăm tabelul utilizatorilor noștri, să compilăm fișierul și să executăm, rezultatul de pe consolă ar fi așa cum se vede în următoarea imagine:
MARI
AvantajAcest lucru are mai multe avantaje, am spus deja că primul este să puteți folosi ceva fără să-l repetați, dar este și pentru securitate, deoarece acest lucru ne permite să tratăm valorile care pot proveni din introducerea utilizatorului pentru a evita un atac asupra Baza de date, pe lângă faptul că putem facilita și lizibilitatea programului nostru.
În exemplul următor vom crea o interogare cu Declarație pregătită, astfel încât să poată fi folosit de mai multe ori în timpul programului nostru. Să vedem codul rezultat:
import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.PreparedStatement; public class PreparedStatementTest {private static final String path = "jdbc: mysql: // localhost / test"; private static final String user = "utilizatorul nostru"; private static final String password = "parola noastră"; public static void main (String [] args) {try {Connection con = DriverManager.getConnection (cale, utilizator, parolă); PreparedStatement query = con.prepareStatement ("SELECT * FROM users Where id = ?;"); System.out.println ("Conexiune reușită"); query.setInt (1, 1); ResultSet result = query.executeQuery (); while (result.next ()) {String name = result.getString ("nume"); Data șirului = result.getString („data”); System.out.println ("Nume:" + nume + "Data înregistrării:" + dată); } result.close (); query.close (); con.close (); } catch (Exception e) {e.printStackTrace (); }}}
Observăm că folosind metoda setInt Cu obiectul de interogare, putem trece parametrul necesar pentru interogare, cu acesta îl putem detașa de executarea interogării, câștigând astfel portabilitate și ușurință în citire. Pentru a termina, compilăm și rulăm programul nostru:
MARI