Työskentely Java-tietokantojen kanssa

{title}

Java monikäyttöisenä kielenä saavutettavien erilaisten toimintojen lisäksi antaa meille myös mahdollisuuden työskennellä tietojen pysyvyydellä, jotta voimme yhdistää markkinoilla oleviin eri tietokantamoottoreihin .
Tietokanta voi olla jotain niin yksinkertaista kuin avaintason järjestelmä tavallisessa tekstitiedostossa, koska monimutkaisemmat ja nykyaikaiset ratkaisut, kuten ei-relaatiot, tekevät tästä mahdollisuuden kehittää erilaisia ​​yhteysjärjestelmiä pakollisena ominaisuutena. .

JDBC: n käyttö


JDBC ovat joukko luokkia, joiden avulla Java voi muodostaa yhteyksiä tietokantamoottoreihin. Tämän avulla voimme saada kyselyiden tulokset ResultSet- nimisessä objektissa.
Koska jokainen moottori on erilainen, on todennäköistä, että saamme ResultSet on erityinen sille, minkä vuoksi meille ei ole kätevää rakentaa sovellustamme objektin ympärille.
Tämän ongelman ratkaisemiseksi voidaan käyttää niin kutsuttua käyttöobjektia, jolla pystymme hallitsemaan ResultSet- järjestelmän erilaisia ​​muotoja, jolloin sen sovellusohjelman sovellus on helpompi toteuttaa ja siten kehittäjällä on vähemmän ongelmia.
DAO-malli

Data Access Object tai DAO on suunnittelumalli, joka kerää edellisessä kohdassa selitetyt seikat. Tämä vaatii meitä luomaan käyttöluokan tietokannan ominaisuuksiin. Tämän työn tekemiseksi meidän on käytettävä JDBC- sarjaa ja ohjainta, joka antaa meille yhteyden haluamaasi moottoriin. Lisäksi meidän on suoritettava selitetty looginen toteutus, jotta voidaan välttää tiettyjen komponenttien riippuvuus, joka vaikeuttaisi meitä vain siirtymään moottoriin. eri tietokannasta.

Tee ensimmäinen yhteys JDBC: n kautta


Ensimmäinen asia, joka meidän on tehtävä JDBC- yhteyden luomiseksi, on tunnistaa, mihin moottoriin haluamme muodostaa yhteyden, ja saada sitten tarvittavat luokat kyseiselle yhteydelle. Tässä tapauksessa aiomme luoda MySQL- yhteyden, tämä moottori on kevyt, vapaa ja cross platform, joten voimme asentaa sen sekä Windows, Linux tai Mac .

Hanki liitin / J


Connector / J on luokkasarja, jota MySQL- kehitysryhmä tarjoaa meille. Heidän kanssaan voimme saada JDBC: n toimimaan yhdessä tämän relaatiotietokannan hallintaohjelman kanssa, jotta voimme sisällyttää sen projektiimme, meidän on noudatettava seuraavia vaiheita.
1 - Meidän on ladattava joko Windows-käyttöjärjestelmää tai muita käyttöjärjestelmiämme vastaava tiedosto viralliselta MySQL- sivulta seuraavalta linkiltä.

{title}


2 - Tässä opetusohjelmassa työskentelemme Windows-käyttöjärjestelmässä, jotta sen toteuttamiseksi esimerkkeissä teemme sen suorituksen aikana helpommaksi, mutta kun lataamme paketin, asennamme sen, jotta sama olisi käytettävissä tietokoneellamme.
3 - Nyt todistamme, että kaikki toimii oikein laitteissamme, tätä varten teemme pienen koodin, josta näemme, onko liitin / J ladattu järjestelmässämme onnistuneesti, tätä varten käytämme seuraavaa koodia:
 julkinen luokka TestConnection {julkinen staattinen tyhjä pää (merkkijono [] merkitsee) {kokeile {Luokka c = Luokka.forName ("com.mysql.jdbc.Driver"); System.out.println ("Class Loaded:" + c.getName ()); } saalis (ClassNotFoundException ex) {System.err.println (ex); }}} 

4 - Tämän esimerkin suorittamiseksi meidän on sisällytettävä riippuvuus, on suositeltavaa, että meillä .jar on samalla polulla TestConexion.java- tiedostomme. Tämän peitettäessä kokoamme tiedostomme, avaamme konsolin ja javac- käskyllä ja lisäämällä .jar luokkarataan suorituksen aikana –cp- komennolla, jonka voimme saavuttaa, katsotaan komentorivi:
 javac –cp mysql-liitin-java-5.1.34-bin.jar TestConnection.java 

5 - Viimeinkin tiedoston suorittamiseksi meidän on suoritettava vain seuraava ohje:
 java –cp mysql-liitin-java-5.1.34-bin.jar testiyhteys 

Jos konsoolissamme on seuraavanlainen tulos, voimme aloittaa työskentelyn tietokantoihin :

{title}

Yhteyden luominen


Seuraava tehtävä, joka meidän on suoritettava, on luoda tehokas yhteys tietokantaamme, tätä varten meidän on luotava taulukko, jolla on ainakin yksi taulukko paikallisella palvelimellamme, tällä tavalla voimme suorittaa joitain testejä helpottaaksemme asioita, jotka luomme tietokantaan nimeltä testi ja käytämme seuraavaa skriptiä taulukon luomiseen ja testitietueiden lisäämiseen, tämä nopeuttaa opetusohjelman kehittämistä:

Luo taulukko, jos sitä ei ole "käyttäjiä" (
`id` bigint (20) EI NULL AUTO_INCREMENT,
`nimi` varchar (255) EI NULL,
"päiväys" päivämäärä EI NULL,
`valtio` int (11) EI NULL,
ALKUPERÄINEN AVAIN (tunnus)
) MOOTTORI = InnoDB DEFAULT CHARSET = latina1 AUTO_INCREMENT = 3;
LISÄÄ "käyttäjille" ("id", "nimi", "päivämäärä", "tila") ARVOT
(1, 'Käyttäjä 1', '2015-01-01', 1),
(2, 'käyttäjä 2', '2015-01-01', 1);

Nyt seuraavassa Java- koodissa keskitymme yhteyden luomiseen tietokantaan, tätä varten yritämme ottaa kiinni -lohkon avulla todentaa, että se on tehokas ja ilman virheitä. Jos yhteys muodostettiin, tulostamme onnistumisviestin, katsotaanpa:
 tuota java.sql.Yhteys; tuo java.sql.DriverManager; julkisen luokan testiyhteys {yksityinen staattinen lopullinen merkkijonon polku = "jdbc: mysql: // localhost"; yksityinen staattinen lopullinen merkkijonokäyttäjä = "käyttäjämme"; yksityinen staattinen lopullinen merkkijono salasana = "salasanamme"; julkinen staattinen void main main (merkkijono [] argit) {kokeile {Yhteys = DriverManager.getConnection (polku, käyttäjä, salasana); System.out.println ("Yhteys onnistunut"); } saalis (poikkeus e) {e.printStackTrace (); }}} 

Tästä koodista voidaan huomata, että meidän on tuotava kaksi kirjastoa java.sql- paketista, yksi on Connection, joka vastaa kaikkien toimintojen hallinnasta kommunikoidaksesi tietokannan kanssa ja toinen on DeviceManager, joka vastaa viestinnän tavasta sen kanssa. Jos olemme noudattaneet vaiheita oikein, meidän pitäisi nähdä seuraava viesti, kun suoritamme esimerkkiä konsolissa:

{title}

Tiedustelujen tekeminen


Meillä on jo kaikki valmis aloittamaan kyselyjemme testaaminen, sillä tarvitsemme useita asioita, joista ensimmäinen meillä on jo objekti, joka muodostaa yhteyden tietokantaan, sitten meidän on tuotava Statement- ja ResultSet- paketit johon voimme ensin lähettää kyselyitä ja sitten saada vastauksen siitä, lopuksi käymme läpi ResultSet- objektin, jossa näytetään taulukossa lisätyt tiedot ja ennen ohjelman sulkemista meidän on suljettava kaikki luomamme objektit, tästä jolla takaamme tietomme eheyden. Katsotaan koodia, joka näyttää selitetyn:
 tuota java.sql.Yhteys; tuo java.sql.DriverManager; tuo java.sql.ResultSet; tuonti java.sql.Latament; julkisen luokan testiyhteys {yksityinen staattinen lopullinen merkkijonon polku = "jdbc: mysql: // localhost / test"; yksityinen staattinen lopullinen merkkijonokäyttäjä = "käyttäjämme"; yksityinen staattinen lopullinen merkkijono salasana = "salasanamme"; julkinen staattinen void main main (merkkijono [] argit) {kokeile {Yhteys = DriverManager.getConnection (polku, käyttäjä, salasana); Lausekysely = con.createStatement (); System.out.println ("Yhteys onnistunut"); ResultSet tulos = query.executeQuery ("VALITSE * käyttäjiltä"); while (tulos.next ()) {merkkijono = tulos.getString ("nimi"); Merkkijono päivämäärä = tulos.getString ("päivämäärä"); System.out.println ("Nimi:" + nimi + "Rekisteröintipäivä:" + päivämäärä); } tulos.sulje (); kysely.sulje (); sulje (); } saalis (poikkeus e) {e.printStackTrace (); }}} 

Tärkeää on mainita, että reitin määritteessämme olemme muuttaneet sitä ja se on lisätty localhostin jälkeen tietokannan nimellä testiksi, jossa meidän on luotava käyttäjän taulukko, kokoamme tiedosto ja suoritamme, konsolin tulos olisi sama kuin Seuraava kuva:

$config[ads_text5] not found

{title}

Valmistetut lausunnot


Tarkkaillessamme esimerkkiä yhteydestä ja tietokantaan liittyvistä kyselyistä, voimme huomata, että meidän on käytettävä valmistelulausuntoa kutsuttavaa kuvaa, jonka avulla on helpompaa jättää valmistellut kyselyt, jotta voimme suorittaa ne useita kertoja tarvitsematta rakentaa niitä uudestaan ​​ja uudestaan. Kerran tämän dynaamisen saavuttamiseksi korvaamme muutettavat arvot muuttujilla ja sitten kyselyä suorittaessamme siirrämme todelliset arvot, joita käytämme.
hyöty

Tällä on useita etuja, sanoimme ensimmäiseksi, että pystymme käyttämään jotain toistamatta sitä, mutta se on myös turvallisuuden kannalta, koska tämä antaa meille mahdollisuuden käsitellä arvoja, joita käyttäjän antamat tiedot saattavat estää tietokannan hyökkäyksen estämiseksi, Voimme myös helpottaa ohjelman luettavuutta.
Seuraavassa esimerkissä luomme kyselyn valmiin lausunnon avulla, jotta sitä voidaan käyttää useita kertoja ohjelman aikana. Katsotaanpa tuloksena olevaa koodia:

 tuota java.sql.Yhteys; tuo java.sql.DriverManager; tuo java.sql.ResultSet; tuo java.sql.PreparedStatement; julkisen luokan PreparedStatement Test {yksityinen staattinen lopullinen merkkijonon polku = "jdbc: mysql: // localhost / test"; yksityinen staattinen lopullinen merkkijonokäyttäjä = "käyttäjämme"; yksityinen staattinen lopullinen merkkijono salasana = "salasanamme"; julkinen staattinen void main main (merkkijono [] argit) {kokeile {Yhteys = DriverManager.getConnection (polku, käyttäjä, salasana); PreparedStatement kysely = con.prepareStatement ("VALITSE * käyttäjiltä Mistä id = ?;"); System.out.println ("Yhteys onnistunut"); kysely.setInt (1, 1); ResultSet tulos = query.executeQuery (); while (tulos.next ()) {merkkijono = tulos.getString ("nimi"); Merkkijono päivämäärä = tulos.getString ("päivämäärä"); System.out.println ("Nimi:" + nimi + "Rekisteröintipäivä:" + päivämäärä); } tulos.sulje (); kysely.sulje (); sulje (); } saalis (poikkeus e) {e.printStackTrace (); }}} 

Huomaa, että setInt- menetelmän käyttäminen kyselyobjektin kanssa on, että pystymme välittämään kyselylle tarvittavan parametrin, tällä voimme erottaa sen kyselyn suorituksesta, jolloin saamme siirrettävyyden ja helpon lukemisen. Lopuksi kokoamme ja suoritamme ohjelman:

$config[ads_text5] not found

{title}


Viimeistelemme tämän opetusohjelman, koska näemme Java- tietokantojen kanssa työskentelyvaihtoehtojen olevan erittäin mielenkiintoisia, koska niiden ansiosta voimme sisällyttää joustavuuden ja monipuolisuuden sovellukseemme, mikä tärkeintä, että jos meillä on kokemusta muista kielistä, sitä voidaan varmasti käyttää täällä.