Turinys
„Java“ Kaip daugiafunkcinė kalba, be įvairių funkcijų, kurias galime pasiekti, ji taip pat leidžia mums dirbti su nuolatiniais duomenimis, todėl galime užmegzti ryšį su skirtingais Duomenų bazės kurie egzistuoja rinkoje.A Duomenų bazė Tai gali būti kažkas tokio paprasto, kaip paprasto teksto failo rakto reikšmių sistema, taip pat sudėtingesni ir modernesni sprendimai, tokie kaip nesusiję, todėl galimybė sukurti skirtingas ryšio schemas yra privaloma funkcija.
JDBC yra klasių rinkinys, kuris leidžia „Java“ užmegzti ryšius su duomenų bazių varikliais, tai leidžia gauti užklausų rezultatus objekte, vadinamame Rezultatų rinkinys.
Kadangi kiekvienas variklis yra skirtingas, tikėtina, kad Rezultatų rinkinys tai, ką mes gauname, yra tam tikra, todėl mums nėra patogu kurti savo programą aplink minėtą objektą.
Norėdami išspręsti šią problemą, galime naudoti tai, kas vadinama a prieigos objektas, su kuriomis galime valdyti įvairias savo formas Rezultatų rinkinys palengvins jūsų programos įgyvendinimą mūsų programoje, todėl kūrėjas turės mažiau problemų.
DAO dizaino modelisThe Duomenų prieigos objektas arba DAO Tai dizaino modelis, kuriame surenkama tai, ką paaiškinome ankstesniame punkte, todėl mums reikia sukurti prieigos klasę prie mūsų savybių Duomenų bazė. Norėdami tai padaryti, turime atlikti visą darbą JDBC ir valdiklis, leidžiantis prisijungti prie konkretaus norimo variklio, be to, turime atlikti loginį diegimą, kurį paaiškiname, kad išvengtume priklausomybės nuo konkrečių komponentų, dėl kurių mums būtų tik sunku pereiti prie kito duomenų bazės variklio.
Pirmas dalykas, kurį turime padaryti, kad sukurtume ryšį JDBC yra nustatyti variklį, prie kurio norime prisijungti, ir tada gauti reikiamas šio ryšio klases, šiuo atveju mes ketiname užmegzti ryšį MySQL, šis variklis yra lengvas, nemokamas ir daugiaplatformis, todėl galime jį įdiegti tiek „Windows“, „Linux“ ar „Mac“.
Jungtis / J yra užsiėmimų, kuriuos siūlo kūrimo komanda, rinkinys MySQL, su jais galime pagaminti JDBC dirbti kartu su tuo Duomenų bazės santykinis, norėdami jį įtraukti į savo projektą, turime atlikti šiuos veiksmus.
1- Mes taip pat turime atsisiųsti failą, atitinkantį mūsų platformą „Windows“ arba kitiems iš oficialios svetainės MySQL Toliau esančioje nuorodoje.
DIDELIS
3- Dabar bandysime patikrinti, ar mūsų kompiuteryje viskas veikia teisingai, tam sukursime nedidelį kodą, kuriame pamatysime, ar jungtis / J buvo sėkmingai įkelta į mūsų sistemą, tam naudosime šį kodą:
public class ConnectionTest {public static void main (String [] args) {try {Class c = Class.forName ("com.mysql.jdbc.Driver"); System.out.println ("Įkelta klasė:" + c.getName ()); } catch (ClassNotFoundException ex) {System.err.println (ex); }}}
4- Norėdami vykdyti šį pavyzdį, turime įtraukti priklausomybę, rekomenduojama turėti .jar tame pačiame mūsų failo kelyje TestConexion.java. Atsižvelgdami į tai, mes toliau kaupiame savo failą, atidarome konsolę ir su instrukcija javac ir pridėjus .jar į klasės takas vykdymo metu su komanda -cp Mes galime tai padaryti, pažiūrėkime komandinę eilutę:
javac -cp mysql-connector-java-5.1.34-bin.jar ConnectionTest.java
5- Galiausiai, norėdami vykdyti savo failą, turime tik įvykdyti šią instrukciją:
java -cp mysql-connector-java-5.1.34-bin.jar TestConnection
Jei konsolėje turime tokį rezultatą, galime pradėti dirbti su Duomenų bazės:
DIDELIS
KURTI LENTELĘ, JEI NĖRA „vartotojų“ (
`id` bigint (20) NOT NULL AUTO_INCREMENT,
"name" varchar (255) NOT NULL,
"data" data NE NULL,
`state` int (11) NOT NULL,
PAGRINDINIS RAKTAS („id“)
) VARIKLIS = „InnoDB DEFAULT CHARSET“ = latin1 AUTO_INCREMENT = 3;
INSERT INTO "vartotojai" ("id", "name", "date", "status") VERTĖS
(1, „1 vartotojas“, „2015-01-01“, 1),
(2, „2 vartotojas“, „2015-01-01“, 1);
Dabar šiame kode „Java“ mes sutelksime dėmesį į ryšio užmezgimą Duomenų bazė, tam su a pabandykite sugauti bloką Patvirtinsime, kad jis veiksmingas ir be klaidų, tada, jei ryšys buvo užmegztas, atspausdinsime sėkmės pranešimą, pažiūrėkime:
importuoti java.sql.Connection; importuoti java.sql.DriverManager; public class ConnectionTest {private static final String path = "jdbc: mysql: // localhost"; private static final String user = "mūsų vartotojas"; private static final String password = "mūsų slaptažodis"; public static void main (String [] args) {try {Connection con = DriverManager.getConnection (kelias, vartotojas, slaptažodis); System.out.println („Sėkmingas ryšys“); } sugauti (e išimtis) {e.printStackTrace (); }}}
Iš šio kodo matome, kad iš paketo turime importuoti dvi bibliotekas java.sql, vienas yra Ryšys kuri yra atsakinga už visos veiklos valdymą, kad būtų galima bendrauti su duomenų baze, o kita yra „DeviceManager“ kuri yra atsakinga už tai, kaip mes su juo bendrausime. Jei teisingai atlikome veiksmus, vykdydami pavyzdį konsolėje turėtume matyti šį pranešimą:
DIDELIS
importuoti java.sql.Connection; importuoti java.sql.DriverManager; importuoti java.sql.ResultSet; importuoti java.sql.Statement; public class ConnectionTest {private static final String path = "jdbc: mysql: // localhost / test"; private static final String user = "mūsų vartotojas"; private static final String password = "mūsų slaptažodis"; public static void main (String [] args) {try {Connection con = DriverManager.getConnection (kelias, vartotojas, slaptažodis); Teiginio užklausa = con.createStatement (); System.out.println („Sėkmingas ryšys“); ResultSet result = query.executeQuery ("SELECT * FROM users"); while (result.next ()) {String name = result.getString ("name"); Eilutės data = result.getString ("data"); System.out.println ("Vardas:" + vardas + "Įrašo data:" + data); } result.close (); query.close (); con.close (); } sugauti (e išimtis) {e.printStackTrace (); }}}
Svarbu tai paminėti mūsų atributikoje maršrutą Mes jį pakeitėme ir pavadinimą Duomenų bazė skambinti testas kur turime sukurti naudotojų lentelę, sudaryti failą ir vykdyti, konsolės rezultatas būtų toks, kaip parodyta šiame paveikslėlyje:
DIDELIS
PrivalumasTai turi keletą privalumų, mes jau sakėme, kad pirmasis yra galimybė kažką naudoti nekartojant, tačiau tai taip pat daroma dėl saugumo, nes tai leidžia mums traktuoti vertybes, kurios galbūt kyla iš vartotojo įvesties, kad išvengtume atakos prieš mūsų Duomenų bazė, be to, mes taip pat galime palengvinti mūsų programos skaitomumą.
Šiame pavyzdyje mes sukursime užklausą su Paruoštas pareiškimas, kad ją būtų galima naudoti kelis kartus per mūsų programą. Pažiūrėkime gautą kodą:
importuoti java.sql.Connection; importuoti java.sql.DriverManager; importuoti java.sql.ResultSet; importuoti java.sql.PreparedStatement; public class PreparedStatementTest {private static final String path = "jdbc: mysql: // localhost / test"; private static final String user = "mūsų vartotojas"; private static final String password = "mūsų slaptažodis"; public static void main (String [] args) {try {Connection con = DriverManager.getConnection (kelias, vartotojas, slaptažodis); PreparedStatement query = con.prepareStatement ("SELECT * FROM users Where id = ?;"); System.out.println („Sėkmingas ryšys“); query.setInt (1, 1); ResultSet rezultatas = query.executeQuery (); while (result.next ()) {String name = result.getString ("vardas"); Eilutės data = result.getString ("data"); System.out.println ("Vardas:" + vardas + "Įrašo data:" + data); } result.close (); query.close (); con.close (); } sugauti (e išimtis) {e.printStackTrace (); }}}
Pastebime, kad naudojant metodą nustatyti Naudodami užklausos objektą, galime perduoti užklausai būtiną parametrą, tai galime atskirti nuo užklausos vykdymo, taip padidindami perkeliamumą ir lengvą skaitymą. Baigdami sudarome ir vykdome savo programą:
DIDELIS