Sadržaj
Java Kao višenamjenski jezik, osim različitih funkcionalnosti koje možemo postići, također nam omogućuje rad uz postojanost podataka, jer za to možemo uspostaviti vezu s različitim strojevima Baze podataka koji postoje na tržištu.A Baza podataka To može biti nešto jednostavno kao sustav ključ-vrijednost u datoteci s običnim tekstom, kao i složenija i modernija rješenja, poput onih koja nisu povezana s odnosima, što čini mogućnost razvoja različitih shema povezivanja obveznom značajkom.
JDBC skup su klasa koje dopuštaju Java uspostaviti veze s bazama podataka, to nam omogućuje dobivanje rezultata upita u objektu tzv ResultSet.
Budući da je svaki motor drugačiji, vjerojatno je da ResultSet ono što primamo posebno mu je, stoga nam nije zgodno strukturirati našu aplikaciju oko spomenutog objekta.
Za rješavanje ovog problema možemo koristiti ono što se naziva a pristupni objekt, pomoću kojih možemo upravljati različitim oblicima našeg ResultSet olakšavajući implementaciju vaše aplikacije u našem programu, a time i programer ima manje problema.
Uzorak dizajna DAOThe Objekt za pristup podacima ili DAO To je uzorak dizajna koji prikuplja ono što smo objašnjavali u prethodnoj točki. To zahtijeva da stvorimo klasu pristupa svojstvima našeg Baza podataka. Da bi ovo uspjelo, moramo napraviti cijeli rad JDBC i kontroler koji nam omogućuje povezivanje s određenim strojem koji želimo, dodatno moramo provesti logičku implementaciju koju objašnjavamo kako bismo izbjegli ovisnost o određenim komponentama koja bi nam samo otežala prelazak na drugi stroj baze podataka.
Prvo što moramo učiniti kako bismo izgradili vezu JDBC je identificirati koji je motor s kojim želimo uspostaviti vezu, a zatim dobiti potrebne klase za spomenutu vezu, u ovom slučaju ćemo uspostaviti vezu MySQL, ovaj je motor lagan, besplatan i multiplatformni pa ga možemo instalirati u Windows, Linux ili Mac.
Priključak / J je skup klasa koje nudi razvojni tim MySQL, s njima možemo napraviti JDBC raditi zajedno s ovim Baze podataka relacijski, kako bismo ga uključili u svoj projekt, moramo slijediti sljedeće korake.
1- Moramo preuzeti i datoteku koja odgovara našoj platformi Windows ili za druge sa službene web stranice MySQL Na sljedećoj poveznici.
POVEĆAJTE
3- Sada ćemo nastaviti s testiranjem radi li sve ispravno na našem računalu, za to ćemo napraviti mali kod u kojem ćemo vidjeti hoće li priključak / J je uspješno učitan u naš sustav, za to ćemo koristiti sljedeći kod:
javna klasa ConnectionTest {public static void main (String [] args) {try {Class c = Class.forName ("com.mysql.jdbc.Driver"); System.out.println ("Učitana klasa:" + c.getName ()); } catch (ClassNotFoundException ex) {System.err.println (ex); }}}
4- Za pokretanje ovog primjera moramo uključiti ovisnost, preporučuje se da imamo .jar istim putem naše datoteke TestConexion.java. S ovim obuhvaćenim nastavit ćemo sastavljati našu datoteku, otvorit ćemo konzolu i s uputama javac i dodavanjem .jar prema razredna staza za vrijeme izvođenja sa naredbom -cp Možemo to učiniti, pogledajmo naredbenu liniju:
javac -cp mysql-connector-java-5.1.34-bin.jar ConnectionTest.java
5- Konačno, za izvršavanje naše datoteke, potrebno je samo izvršiti sljedeću uputu:
java -cp mysql-connector-java-5.1.34-bin.jar TestConnection
Ako na konzoli imamo rezultat poput sljedećeg, možemo početi raditi s operacijama do Baze podataka:
POVEĆAJTE
IZRADI TABLICU AKO NE POSTOJI `korisnici` (
`id` bigint (20) NIJE NULL AUTO_INCREMENT,
`name` varchar (255) NIJE NULL,
datum "datum" NIJE NULL,
`stanje` int (11) NIJE NULL,
PRIMARNI KLJUČ (`id`)
) MOTOR = InnoDB ZADNJA KARTE = latin1 AUTO_INCREMENT = 3;
INSERT INTO `users` (` id`, `name`,` date`, `status`) VRIJEDNOSTI
(1, "Korisnik 1", "2015-01-01", 1),
(2, "Korisnik 2", "2015-01-01", 1);
Sada u sljedećem kodu od Java usredotočit ćemo se na uspostavljanje veze s Baza podataka, za ovo s a pokušaj uhvatiti blok Potvrdit ćemo da je učinkovit i bez pogrešaka, a ako je veza uspostavljena, ispisat ćemo poruku o uspjehu, da vidimo:
import java.sql.Connection; import java.sql.DriverManager; javni razred ConnectionTest {private static final String path = "jdbc: mysql: // localhost"; private static final String user = "naš korisnik"; private static final String password = "naša lozinka"; public static void main (String [] args) {try {Connection con = DriverManager.getConnection (put, korisnik, lozinka); System.out.println ("Veza uspješna"); } catch (iznimka e) {e.printStackTrace (); }}}
Iz ovog koda možemo vidjeti da moramo uvesti dvije knjižnice iz paketa java.sql, jedno je Veza koja je zadužena za upravljanje svim aktivnostima kako bi mogla komunicirati s Bazom podataka, a druga je Upravitelj uređaja koja je odgovorna za osiguravanje načina na koji ćemo s njom komunicirati. Ako smo pravilno slijedili korake, trebali bismo vidjeti sljedeću poruku prilikom izvođenja našeg primjera u konzoli:
POVEĆAJTE
import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; uvoz java.sql.Statement; javna klasa ConnectionTest {private static final String path = "jdbc: mysql: // localhost / test"; private static final String user = "naš korisnik"; private static final String password = "naša lozinka"; public static void main (String [] args) {try {Connection con = DriverManager.getConnection (put, korisnik, lozinka); Upit izraza = con.createStatement (); System.out.println ("Veza uspješna"); ResultSet result = query.executeQuery ("SELECT * FROM users"); while (result.next ()) {Naziv niza = rezultat.getString ("ime"); Niz datum = rezultat.getString ("datum"); System.out.println ("Naziv:" + ime + "Datum zapisa:" + datum); } rezultat.close (); upit.zatvoriti (); con.close (); } catch (iznimka e) {e.printStackTrace (); }}}
Važno je to spomenuti u našem atributu rutu Izmijenili smo ga i naziv Baza podataka poziv test gdje moramo stvoriti tablicu korisnika, sastaviti našu datoteku i izvršiti, rezultat po konzoli bio bi kao što se vidi na sljedećoj slici:
POVEĆAJTE
PrednostOvo ima nekoliko prednosti, već smo rekli da je prva mogućnost da se nešto koristi bez ponavljanja, ali to je i zbog sigurnosti, jer nam to omogućuje da tretiramo vrijednosti koje eventualno dolaze od unosa korisnika kako bismo izbjegli napad na naš Baza podataka, osim što možemo olakšati čitljivost našeg programa.
U sljedećem primjeru ćemo stvoriti upit s Pripremljena izjava, tako da se može koristiti nekoliko puta tijekom našeg programa. Pogledajmo rezultirajući kod:
import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.PreparedStatement; javna klasa PreparedStatementTest {private static final String path = "jdbc: mysql: // localhost / test"; private static final String user = "naš korisnik"; private static final String password = "naša lozinka"; public static void main (String [] args) {try {Connection con = DriverManager.getConnection (put, korisnik, lozinka); PreparedStatement upit = con.prepareStatement ("SELECT * FROM users Where id = ?;"); System.out.println ("Veza uspješna"); query.setInt (1, 1); ResultSet rezultat = query.executeQuery (); while (result.next ()) {Naziv niza = rezultat.getString ("ime"); Niz datum = rezultat.getString ("datum"); System.out.println ("Ime:" + ime + "Datum zapisa:" + datum); } rezultat.close (); upit.zatvoriti (); con.close (); } catch (iznimka e) {e.printStackTrace (); }}}
Uočavamo da korištenjem metode setInt Objektom upita možemo proslijediti potrebni parametar za upit, čime ga možemo odvojiti od izvršenja upita, čime se dobiva prenosivost i lakoća čitanja. Za kraj sastavljamo i pokrećemo naš program:
POVEĆAJTE