Indholdsfortegnelse
Java Som et multifunktionssprog, bortset fra de forskellige funktionaliteter, vi kan opnå, giver det os også mulighed for at arbejde med vedholdenhed af data, for dette kan vi oprette forbindelse til de forskellige motorer i Databaser der findes på markedet.EN Database Det kan være noget så simpelt som et nøgleværdisystem i en almindelig tekstfil, såvel som mere komplekse og moderne løsninger som f.eks. Ikke-relationelle, hvilket gør det muligt at udvikle forskellige forbindelsesordninger til en obligatorisk funktion.
JDBC er et sæt klasser, der tillader Java etablere forbindelser med databasemotorer, giver dette os mulighed for at få resultaterne af forespørgslerne i et objekt, der kaldes Resultat Indstil.
Da hver motor er forskellig, er det sandsynligt, at Resultat Indstil som vi modtager, er særligt for det, og derfor er det ikke praktisk for os at strukturere vores applikation omkring objektet.
For at løse dette problem kan vi bruge det, der kaldes a adgangsobjekt, som vi kan styre de forskellige former for vores Resultat Indstil gør din ansøgning inden for vores program lettere at implementere, og udvikleren har dermed færre problemer.
DAO designmønsterDet Dataadgangsobjekt eller DAO Det er et designmønster, der samler det, vi havde forklaret i det foregående punkt, dette kræver, at vi opretter en adgangsklasse til egenskaberne for vores Database. For at få dette til at fungere må vi få det hele til at fungere JDBC og controlleren, der giver os mulighed for at oprette forbindelse til den bestemte motor, vi ønsker, derudover skal vi udføre den logiske implementering, som vi forklarer for at undgå afhængighed af bestemte komponenter, der kun ville gøre det svært for os at migrere til en anden database -motor.
Den første ting, vi skal gøre for at opbygge en forbindelse JDBC er at identificere hvilken motor vi vil oprette forbindelsen til og derefter få de nødvendige klasser til den nævnte forbindelse, i dette tilfælde vil vi oprette en forbindelse MySQL, denne motor er let, gratis og multiplatform, så vi kan installere den begge i Windows, Linux eller Mac.
Stik / J er det sæt klasser, der tilbydes af udviklingsteamet af MySQL, med dem kan vi lave JDBC arbejde sammen med dette Databaser relationelle, for at indarbejde det i vores projekt skal vi følge følgende trin.
1- Vi skal enten downloade den fil, der svarer til vores platform Windows eller for andre fra det officielle websted for MySQL I det følgende link.
FORSTØRRE
3- Nu vil vi fortsætte med at teste, at alt fungerer korrekt på vores computer, til dette vil vi lave en lille kode, hvor vi vil se, om stik / J blev indlæst med succes i vores system, til dette vil vi bruge følgende kode:
public class ConnectionTest {public static void main (String [] args) {try {Class c = Class.forName ("com.mysql.jdbc.Driver"); System.out.println ("Indlæst klasse:" + c.getName ()); } catch (ClassNotFoundException ex) {System.err.println (ex); }}}
4- For at køre dette eksempel skal vi inkludere afhængigheden, det anbefales, at vi har .krukke i den samme sti som vores fil TestConexion.java. Med dette dækket fortsætter vi med at kompilere vores fil, vi åbner en konsol og med instruktionen javac og tilføjelse af .krukke til klassesti ved runtime med kommandoen -cp Vi kan gøre det, lad os se kommandolinjen:
javac -cp mysql-connector-java-5.1.34-bin.jar ConnectionTest.java
5- Endelig, for at eksekvere vores fil, behøver vi kun at udføre følgende instruktion:
java -cp mysql-connector-java-5.1.34-bin.jar TestConnection
Hvis vi har et resultat som følgende i vores konsol, kan vi begynde at arbejde med operationer til Databaser:
FORSTØRRE
Opret tabel, hvis den ikke findes 'brugere' (
`id` bigint (20) IKKE NULL AUTO_INCREMENT,
`navn` varchar (255) IKKE NULL,
`dato` dato IKKE NULL,
`state` int (11) NOT NULL,
PRIMÆR NØGLE (`id`)
) MOTOR = InnoDB DEFAULT CHARSET = latin1 AUTO_INCREMENT = 3;
INSERT INTO `users '(` id`, `name`,` date`, `status`) VÆRDIER
(1, 'Bruger 1', '2015-01-01', 1),
(2, 'Bruger 2', '2015-01-01', 1);
Nu i følgende kode af Java vi vil fokusere på at etablere forbindelsen med Database, for dette med en prøv fangstblok Vi vil validere, at den er effektiv og uden fejl, så hvis forbindelsen blev etableret, udskriver vi en succesbesked, lad os se:
import java.sql.Connect; import java.sql.DriverManager; public class ConnectionTest {private static final String path = "jdbc: mysql: // localhost"; private static final String user = "vores bruger"; private static final String password = "vores kodeord"; public static void main (String [] args) {try {Connection con = DriverManager.getConnection (sti, bruger, adgangskode); System.out.println ("Forbindelsen lykkedes"); } fangst (Undtagelse e) {e.printStackTrace (); }}}
Fra denne kode kan vi se, at vi skal importere to biblioteker fra pakken java.sql, den ene er Forbindelse som har ansvaret for at styre alle aktiviteterne for at kunne kommunikere med databasen og den anden er Enhedshåndtering som er ansvarlig for at levere den måde, vi vil kommunikere med det. Hvis vi har fulgt trinene korrekt, skulle vi se følgende meddelelse, når vi kører vores eksempel i konsollen:
FORSTØRRE
import java.sql.Connect; 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 = "vores bruger"; private static final String password = "vores adgangskode"; public static void main (String [] args) {try {Connection con = DriverManager.getConnection (sti, bruger, adgangskode); Erklæring forespørgsel = con.createStatement (); System.out.println ("Forbindelsen lykkedes"); ResultSet result = query.executeQuery ("VÆLG * FRA brugere"); while (result.next ()) {String name = result.getString ("name"); String date = result.getString ("date"); System.out.println ("Navn:" + navn + "Optagelsesdato:" + dato); } result.close (); query.close (); lukk (); } fangst (Undtagelse e) {e.printStackTrace (); }}}
Det er vigtigt at nævne det i vores attribut rute Vi har ændret det og navnet på Database opkald prøve hvor vi skal have vores brugertabel oprettet, kompilere vores fil og eksekvere, ville resultatet ved konsol være som set på følgende billede:
FORSTØRRE
FordelDette har flere fordele, vi sagde allerede, at det første er at kunne bruge noget uden at gentage det, men det er også for sikkerheden, da dette giver os mulighed for at behandle de værdier, der muligvis kommer fra brugerinput for at undgå et angreb på vores Database, udover vi kan også lette læsbarheden af vores program.
I det følgende eksempel vil vi oprette en forespørgsel med Udarbejdet erklæring, så den kan bruges flere gange i løbet af vores program. Lad os se den resulterende kode:
import java.sql.Connect; 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 = "vores bruger"; private static final String password = "vores kodeord"; public static void main (String [] args) {try {Connection con = DriverManager.getConnection (sti, bruger, adgangskode); PreparedStatement forespørgsel = con.prepareStatement ("SELECT * FRA brugere Hvor id = ?;"); System.out.println ("Forbindelsen lykkedes"); query.setInt (1, 1); ResultSet result = query.executeQuery (); while (result.next ()) {String name = result.getString ("name"); String date = result.getString ("date"); System.out.println ("Navn:" + navn + "Optagelsesdato:" + dato); } result.close (); query.close (); lukk (); } fangst (Undtagelse e) {e.printStackTrace (); }}}
Vi bemærker, at ved hjælp af metoden setInt Med forespørgselsobjektet kan vi videregive den nødvendige parameter til forespørgslen, med dette kan vi løsne det fra henvendelsen af forespørgslen og dermed opnå portabilitet og let læsning. For at afslutte kompilerer og kører vi vores program:
FORSTØRRE