Jobber med databaser i Java

Innholdsfortegnelse
Java Som et flerbruksspråk, bortsett fra de forskjellige funksjonene vi kan oppnå, lar det oss også jobbe med utholdenhet av data, for dette kan vi opprette forbindelse med de forskjellige motorene i Databaser som finnes i markedet.
EN Database Det kan være noe så enkelt som et nøkkelverdisystem i en ren tekstfil, så vel som mer komplekse og moderne løsninger som ikke-relasjonelle, dette gjør det mulig å utvikle forskjellige tilkoblingsordninger til en obligatorisk funksjon.
JDBC er et sett med klasser som tillater Java etablere forbindelser med databasemotorer, lar dette oss få resultatene av spørringene i et objekt som kalles ResultatSett.
Siden hver motor er forskjellig, er det sannsynlig at ResultatSett som vi mottar er spesielt for det, derfor er det ikke praktisk for oss å strukturere applikasjonen vår rundt objektet.
For å løse dette problemet kan vi bruke det som kalles a tilgangsobjekt, som vi kan håndtere de forskjellige formene for ResultatSett gjør applikasjonen din i programmet enklere å implementere, og dermed har utvikleren færre problemer.
DAO -designmønsteretDe Datatilgangsobjekt eller DAO Det er et designmønster som samler det vi hadde forklart i forrige punkt, dette krever at vi lager en tilgangsklasse til egenskapene til våre Database. For å få dette til å fungere må vi få hele arbeidet JDBC og kontrolleren som lar oss koble til den bestemte motoren vi ønsker, i tillegg må vi utføre den logiske implementeringen som vi forklarer for å unngå avhengighet av spesifikke komponenter som bare ville gjøre det vanskelig for oss å migrere til en annen database -motor.
Det første vi må gjøre for å bygge en forbindelse JDBC er å identifisere hvilken motor vi vil koble til og deretter få de nødvendige klassene for nevnte tilkobling, i dette tilfellet skal vi opprette en forbindelse MySQL, denne motoren er lett, gratis og multiplatform, så vi kan installere den begge i Windows, Linux eller Mac.
Kontakt / J er settet med klasser som tilbys av utviklingsteamet til MySQL, med dem kan vi lage JDBC jobbe sammen med dette Databaser relasjonelt, for å inkorporere det i vårt prosjekt må vi følge følgende trinn.
1- Vi må laste ned filen som tilsvarer plattformen vår, heller Windows eller for andre fra det offisielle nettstedet til MySQL I følgende lenke.

FORSTØRRE

2- I denne opplæringen vil vi jobbe under Windows, så for implementering i eksemplene våre vil vi gjøre det ved kjøretid for å gjøre det lettere, men når vi laster ned pakken, installerer vi den for å ha den tilgjengelig på datamaskinen vår.
3- Nå vil vi fortsette med å teste at alt fungerer som det skal på datamaskinen vår, for dette vil vi lage en liten kode der vi vil se om kontakt / J ble lastet inn i systemet vårt, for dette vil vi bruke følgende kode:
 public class ConnectionTest {public static void main (String [] args) {try {Class c = Class.forName ("com.mysql.jdbc.Driver"); System.out.println ("Lastet klasse:" + c.getName ()); } catch (ClassNotFoundException ex) {System.err.println (eks); }}} 

4- For å kjøre dette eksemplet må vi inkludere avhengigheten, det anbefales at vi har .krukke i den samme banen til filen vår TestConexion.java. Med dette dekket fortsetter vi med å kompilere filen vår, vi åpner en konsoll og med instruksjonene javac og legge til .krukke til klassesti ved kjøretid med kommandoen -cp Vi kan gjøre det, la oss se kommandolinjen:
 javac -cp mysql-connector-java-5.1.34-bin.jar ConnectionTest.java 

5- Til slutt, for å utføre filen vår, trenger vi bare å utføre følgende instruksjon:
java -cp mysql-connector-java-5.1.34-bin.jar TestConnection

Hvis vi har et resultat som følgende i konsollen, kan vi begynne å jobbe med operasjoner til Databaser:

FORSTØRRE

Det neste trinnet vi må ta er å etablere en effektiv forbindelse til vår Database, for dette må vi lage en med minst ett bord på vår lokale server, på denne måten kan vi utføre noen tester, for å gjøre ting enklere lager vi en database som heter test og vi bruker følgende skript til å lage tabellen og sette inn noen testposter, dette for å fremskynde utviklingen av opplæringen:

OPPRETT TABELL HVIS IKKE FESTER `brukere` (
`id` bigint (20) IKKE NULL AUTO_INCREMENT,
`navn` varchar (255) IKKE NULL,
`date` date NOT NULL,
`state` int (11) NOT NULL,
PRIMÆR NØKKEL (`id ')
) MOTOR = InnoDB DEFAULT CHARSET = latin1 AUTO_INCREMENT = 3;
INSERT INTO `users '(` id`, `name`,` date`, `status`) VERDIER
(1, 'Bruker 1', '2015-01-01', 1),
(2, 'Bruker 2', '2015-01-01', 1);

Nå i følgende kode for Java vi skal fokusere på å etablere forbindelsen med Database, for dette med en prøv fangstblokk Vi vil bekrefte at den er effektiv og uten feil, så hvis forbindelsen ble opprettet, vil vi skrive ut en suksessmelding, la oss se:
 import java.sql.Connection; importer java.sql.DriverManager; offentlig klasse ConnectionTest {private static final String path = "jdbc: mysql: // localhost"; private static final String user = "vår bruker"; private static final String password = "vårt passord"; public static void main (String [] args) {try {Connection con = DriverManager.getConnection (bane, bruker, passord); System.out.println ("Tilkobling vellykket"); } fangst (unntak e) {e.printStackTrace (); }}} 

Fra denne koden kan vi se at vi må importere to biblioteker fra pakken java.sql, en er Forbindelse som har ansvaret for å administrere alle aktivitetene for å kunne kommunisere med databasen og den andre er Enhetsbehandling som er ansvarlig for å gi måten vi vil kommunisere med det. Hvis vi har fulgt trinnene riktig, bør vi se følgende melding når vi kjører vårt eksempel i konsollen:

FORSTØRRE

Vi har alt klart til å begynne å teste våre spørsmål, for dette trenger vi flere ting, det første vi allerede har er objektet som gjør forbindelsen til Database, da må vi importere pakkene Uttalelse Y ResultatSett som vi først kan sende forespørsler til og deretter få svaret på det samme, til slutt går vi gjennom objektet ResultatSett hvor vi vil vise dataene som er satt inn i tabellen, og før vi avslutter programmet må vi lukke hvert av objektene vi har opprettet, på denne måten vil vi garantere integriteten til dataene våre. La oss se koden som viser det som er forklart:
 import java.sql.Connection; importer java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; offentlig klasse ConnectionTest {private static final String path = "jdbc: mysql: // localhost / test"; private static final String user = "vår bruker"; private static final String password = "vårt passord"; public static void main (String [] args) {try {Connection con = DriverManager.getConnection (bane, bruker, passord); Uttalelse forespørsel = con.createStatement (); System.out.println ("Tilkobling vellykket"); ResultSet result = query.executeQuery ("VELG * FRA brukere"); while (result.next ()) {String name = result.getString ("name"); String date = result.getString ("date"); System.out.println ("Navn:" + navn + "Registreringsdato:" + dato); } result.close (); query.close (); kon.close (); } fangst (unntak e) {e.printStackTrace (); }}} 

Det er viktig å nevne det i vår egenskap rute Vi har endret det og navnet på Database anrop test der vi må ha brukerens tabell opprettet, kompilere filen vår og utføre, vil resultatet etter konsoll være som vist i følgende bilde:

FORSTØRRE

Etter å ha observert eksemplet på tilkoblingen og forespørslene til databasen, kan vi se at vi må bruke en figur som heter Forbered erklæring det gjør arbeidet vårt enklere ved å la spørsmålene være forberedt slik at vi kan utføre dem flere ganger uten å måtte bygge dem om og om igjen, for å oppnå denne dynamikken erstatter vi verdiene vi må endre for variabler, og når vi kjører spørringen sender vi de virkelige verdiene til den. å bruke.
FordelDette har flere fordeler, vi sa allerede at det første er å kunne bruke noe uten å gjenta det, men det er også for sikkerhet, siden dette lar oss behandle verdiene som muligens kommer fra brukerinngang for å unngå et angrep på våre Database, i tillegg til at vi også kan lette lesbarheten til programmet vårt.
I det følgende eksemplet skal vi lage en spørring med Utarbeidet erklæring, slik at den kan brukes flere ganger i løpet av programmet. La oss se den resulterende koden:
 import java.sql.Connection; importer java.sql.DriverManager; import java.sql.ResultSet; importer java.sql.PreparedStatement; public class PreparedStatementTest {private static final String path = "jdbc: mysql: // localhost / test"; private static final String user = "vår bruker"; private static final String password = "vårt passord"; public static void main (String [] args) {try {Connection con = DriverManager.getConnection (bane, bruker, passord); PreparedStatement query = con.prepareStatement ("SELECT * FRA brukere Hvor id = ?;"); System.out.println ("Tilkobling vellykket"); 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 + "Registreringsdato:" + dato); } result.close (); query.close (); kon.close (); } fangst (unntak e) {e.printStackTrace (); }}} 

Vi merker det ved å bruke metoden setInt Med spørringsobjektet kan vi passere den nødvendige parameteren for spørringen, med dette kan vi koble den fra utførelsen av spørringen, og dermed oppnå bærbarhet og enkel lesing. For å fullføre, kompilerer og kjører vi programmet vårt:

FORSTØRRE

Med dette fullfører vi denne opplæringen, ettersom vi ser alternativene å jobbe med Databaser i Java De er veldig interessante siden de tillater oss å inkorporere fleksibilitet og allsidighet i applikasjonene våre. Det viktigste er at hvis vi har erfaring med andre språk, vil det sikkert bli brukt her.

Du vil bidra til utvikling av området, dele siden med vennene dine

wave wave wave wave wave