Werken met databases in Java

Inhoudsopgave
Java Als veelzijdige taal stelt het ons, naast de verschillende functionaliteiten die we kunnen realiseren, ook in staat om te werken met de persistentie van data, hiervoor kunnen we verbinding maken met de verschillende motoren van Databases die er op de markt zijn.
EEN Database Het kan zoiets eenvoudigs zijn als een sleutelwaardesysteem in een gewoon tekstbestand, maar ook complexere en modernere oplossingen zoals niet-relationele oplossingen, waardoor het ontwikkelen van verschillende verbindingsschema's een verplichte functie is.
JDBC zijn een reeks klassen die toestaan Java verbindingen tot stand te brengen met database-engines, dit stelt ons in staat om de resultaten van de zoekopdrachten te verkrijgen in een object met de naam ResultaatSet.
Aangezien elke motor anders is, is het waarschijnlijk dat de ResultaatSet die we ontvangen is er specifiek voor, daarom is het niet handig voor ons om onze applicatie rond dat object te structureren.
Om dit probleem op te lossen kunnen we gebruik maken van wat a . wordt genoemd toegang tot object, waarmee we de verschillende vormen van onze ResultaatSet waardoor uw applicatie binnen ons programma eenvoudiger te implementeren is en de ontwikkelaar dus minder problemen heeft.
Het DAO-ontwerppatroonDe Gegevenstoegangsobject of DAO Het is een ontwerppatroon dat verzamelt wat we in het vorige punt hadden uitgelegd, dit vereist dat we een toegangsklasse maken voor de eigenschappen van onze Database. Om dit te laten werken, moeten we het hele werk maken JDBC en de controller waarmee we verbinding kunnen maken met de specifieke engine die we willen, bovendien moeten we de logische implementatie uitvoeren die we uitleggen om afhankelijkheid van specifieke componenten te voorkomen die het ons alleen maar moeilijk zouden maken om naar een andere database-engine te migreren.
Het eerste wat we moeten doen om een ​​verbinding op te bouwen JDBC is om te identificeren met welke engine we de verbinding willen maken en vervolgens de benodigde klassen voor die verbinding te krijgen, in dit geval gaan we een verbinding maken MySQL, deze engine is licht, gratis en multiplatform, dus we kunnen hem zowel in Windows, Linux of Mac.
Connector / J is de reeks lessen die worden aangeboden door het ontwikkelteam van MySQL, met hen kunnen we maken JDBC werk hier mee samen Databases relationeel, om het in ons project op te nemen, moeten we de volgende stappen volgen.
1- We moeten het bestand downloaden dat overeenkomt met ons platform, ofwel ramen of voor anderen van de officiële website van MySQL Op de volgende link.

VERGROTEN

2- In deze tutorial zullen we onder Windows werken, dus voor de implementatie ervan in onze voorbeelden zullen we het tijdens runtime doen voor meer gemak, maar wanneer we het pakket downloaden, installeren we het om het beschikbaar te hebben op onze computer.
3- Nu gaan we testen of alles correct werkt op onze computer, hiervoor zullen we een kleine code maken waar we zullen zien of connector / J is succesvol in ons systeem geladen, hiervoor gebruiken we de volgende code:
 public class ConnectionTest {public static void main (String [] args) {try {Class c = Class.forName ("com.mysql.jdbc.Driver"); System.out.println ("Geladen klasse:" + c.getName ()); } catch (ClassNotFoundException ex) {System.err.println (ex); }}} 

4- Om dit voorbeeld uit te voeren, moeten we de afhankelijkheid opnemen, het wordt aanbevolen dat we de .kan in hetzelfde pad van ons bestand TestConexion.java. Met dit gedekt gaan we verder met het compileren van ons bestand, we openen een console en met de instructie javac en het toevoegen van de .kan naar de klassenpad tijdens runtime met het commando -cp We kunnen het, laten we de opdrachtregel eens bekijken:
 javac -cp mysql-connector-java-5.1.34-bin.jar ConnectionTest.java 

5- Ten slotte, om ons bestand uit te voeren, hoeven we alleen de volgende instructie uit te voeren:
java -cp mysql-connector-java-5.1.34-bin.jar TestConnection

Als we een resultaat hebben zoals het volgende in onze console, kunnen we beginnen met bewerkingen om Databases:

VERGROTEN

De volgende stap die we moeten nemen is om een ​​effectieve verbinding tot stand te brengen met onze Database, hiervoor moeten we er een maken met ten minste één tabel op onze lokale server, op deze manier kunnen we enkele tests uitvoeren, om dingen gemakkelijker te maken, maken we een database met de naam toets en we gebruiken het volgende script om de tabel te maken en enkele testrecords in te voegen, dit om de ontwikkeling van de tutorial te versnellen:

MAAK TABEL INDIEN NIET BESTAAT `gebruikers` (
`id` bigint (20) NIET NULL AUTO_INCREMENT,
`naam` varchar (255) NIET NULL,
`datum` datum NIET NULL,
`state` int (11) NIET NULL,
PRIMAIRE SLEUTEL (`id`)
) MOTOR = InnoDB STANDAARD CHARSET = latin1 AUTO_INCREMENT = 3;
INSERT INTO `users` (` id`, `name`,` date`, `status`) WAARDEN
(1, 'Gebruiker 1', '2015-01-01', 1),
(2, 'Gebruiker 2', '2015-01-01', 1);

Nu in de volgende code van Java we gaan ons richten op het leggen van de verbinding met de Database, hiervoor met een probeer vangblok We zullen valideren dat het effectief en zonder fouten is, en als de verbinding tot stand is gebracht, zullen we een succesbericht afdrukken, laten we eens kijken:
 import java.sql.Verbinding; java.sql.DriverManager importeren; public class ConnectionTest {private static final String path = "jdbc: mysql: // localhost"; private static final String gebruiker = "onze gebruiker"; private static final String wachtwoord = "ons wachtwoord"; public static void main (String [] args) {probeer {Connection con = DriverManager.getConnection (pad, gebruiker, wachtwoord); System.out.println ("Verbinding succesvol"); } catch (uitzondering e) {e.printStackTrace (); }}} 

Uit deze code kunnen we zien dat we twee bibliotheken uit het pakket moeten importeren java.sql, een is Verbinding die verantwoordelijk is voor het beheer van alle activiteiten om te kunnen communiceren met de database en de andere is Apparaat beheerder die verantwoordelijk is voor de manier waarop we ermee communiceren. Als we de stappen correct hebben gevolgd, zouden we het volgende bericht moeten zien wanneer we ons voorbeeld in de console uitvoeren:

VERGROTEN

We hebben alles klaar om te beginnen met het testen van onze vragen, hiervoor hebben we verschillende dingen nodig, de eerste die we al hebben is het object dat de verbinding maakt met de Database, dan moeten we de pakketten importeren Uitspraak Y ResultaatSet waarmee we eerst vragen kunnen sturen en dan het antwoord krijgen, tenslotte gaan we door het object ResultaatSet waar we de gegevens zullen tonen die in de tabel zijn ingevoegd en voordat we het programma sluiten, moeten we elk van de objecten die we hebben gemaakt sluiten, op deze manier garanderen we de integriteit van onze gegevens. Laten we eens kijken naar de code die laat zien wat er wordt uitgelegd:
 import java.sql.Verbinding; java.sql.DriverManager importeren; import java.sql.ResultSet; import java.sql.Statement; public class ConnectionTest {private static final String path = "jdbc: mysql: // localhost / test"; private static final String gebruiker = "onze gebruiker"; private static final String wachtwoord = "ons wachtwoord"; public static void main (String [] args) {probeer {Connection con = DriverManager.getConnection (pad, gebruiker, wachtwoord); Statement query = con.createStatement (); System.out.println ("Verbinding succesvol"); ResultSet result = query.executeQuery ("SELECT * FROM gebruikers"); while (result.next ()) {String name = resultaat.getString ("naam"); String datum = resultaat.getString ("datum"); System.out.println ("Naam:" + naam + "Recorddatum:" + datum); } resultaat.sluiten (); vraag.sluiten (); con.sluiten (); } catch (uitzondering e) {e.printStackTrace (); }}} 

Het is belangrijk om te vermelden dat in ons attribuut route We hebben het aangepast en de naam van de Database telefoongesprek toets waar we onze gebruikerstabel moeten laten maken, ons bestand moeten compileren en uitvoeren, zou het resultaat per console zijn zoals te zien is in de volgende afbeelding:

VERGROTEN

Nadat we het voorbeeld van de verbinding en de query's naar de database hebben bekeken, kunnen we zien dat we een figuur moeten gebruiken met de naam Verklaring voorbereiden dat maakt ons werk gemakkelijker door query's voorbereid te laten zodat we ze meerdere keren kunnen uitvoeren zonder ze steeds opnieuw te hoeven bouwen, om deze dynamiek te bereiken, vervangen we de waarden die we moeten veranderen voor variabelen en wanneer we de query geven we de echte waarden door om te gebruiken.
VoordeelDit heeft verschillende voordelen, we zeiden al dat de eerste is om iets te kunnen gebruiken zonder het te herhalen, maar het is ook voor de veiligheid, omdat dit ons in staat stelt om de waarden te behandelen die mogelijk afkomstig zijn van gebruikersinvoer om een ​​aanval op ons te voorkomen Database kunnen we daarnaast ook de leesbaarheid van ons programma vergemakkelijken.
In het volgende voorbeeld gaan we een query maken met: Voorbereide verklaring, zodat het meerdere keren tijdens ons programma kan worden gebruikt. Laten we de resulterende code bekijken:
 import java.sql.Verbinding; java.sql.DriverManager importeren; import java.sql.ResultSet; import java.sql.PreparedStatement; public class PreparedStatementTest {private static final String path = "jdbc: mysql: // localhost / test"; private static final String gebruiker = "onze gebruiker"; private static final String wachtwoord = "ons wachtwoord"; public static void main (String [] args) {probeer {Connection con = DriverManager.getConnection (pad, gebruiker, wachtwoord); PreparedStatement query = con.prepareStatement ("SELECT * FROM gebruikers Where id =?;"); System.out.println ("Verbinding succesvol"); query.setInt (1, 1); ResultSet resultaat = query.executeQuery (); while (result.next ()) {String name = resultaat.getString ("naam"); String datum = resultaat.getString ("datum"); System.out.println ("Naam:" + naam + "Recorddatum:" + datum); } resultaat.sluiten (); vraag.sluiten (); con.sluiten (); } catch (uitzondering e) {e.printStackTrace (); }}} 

We merken dat met behulp van de methode setInt Met het query-object kunnen we de benodigde parameter voor de query doorgeven, hiermee kunnen we deze loskoppelen van de uitvoering van de query, waardoor draagbaarheid en leesbaarheid wordt verkregen. Om te eindigen, compileren en voeren we ons programma uit:

VERGROTEN

Hiermee sluiten we deze tutorial af, omdat we de opties zien om mee te werken Databases in Java Ze zijn erg interessant omdat ze ons in staat stellen om flexibiliteit en veelzijdigheid in onze applicaties op te nemen, het belangrijkste is dat als we ervaring hebben met andere talen, het hier zeker zal worden gebruikt.

U zal helpen de ontwikkeling van de site, het delen van de pagina met je vrienden

wave wave wave wave wave