Práce s databázemi v Javě

Obsah
Jáva Jako víceúčelový jazyk nám kromě různých funkcí, kterých můžeme dosáhnout, také umožňuje pracovat s trvalostí dat, a proto můžeme navázat spojení s různými motory Databáze které na trhu existují.
A Databáze Může to být něco tak jednoduchého, jako je systém klíč-hodnota v prostém textovém souboru, stejně jako složitější a modernější řešení, jako jsou nerelační, díky čemuž je schopnost vyvíjet různá schémata připojení povinnou funkcí.
JDBC je sada tříd, které umožňují Jáva navázat spojení s databázovými stroji, to nám umožňuje získat výsledky dotazů v objektu s názvem ResultSet.
Protože je každý motor jiný, je pravděpodobné, že ResultSet to, co dostáváme, je pro to specifické, a proto není pro nás vhodné strukturovat naši aplikaci kolem uvedeného objektu.
K vyřešení tohoto problému můžeme použít to, co se nazývá a přístupový objekt, pomocí kterého můžeme spravovat různé naše formy ResultSet usnadňuje implementaci vaší aplikace v rámci našeho programu a vývojář tak má méně problémů.
Designový vzor DAOThe Objekt pro přístup k datům nebo DAO Je to návrhový vzor, ​​který shromažďuje to, co jsme vysvětlovali v předchozím bodě, což vyžaduje, abychom vytvořili přístupovou třídu k vlastnostem našich Databáze. Aby to fungovalo, musíme udělat celou práci JDBC a řadič, který nám umožňuje spojit se s konkrétním motorem, který chceme, navíc musíme provést logickou implementaci, kterou vysvětlíme, abychom se vyhnuli závislosti na konkrétních komponentách, které by nám jen ztěžovaly migraci na jiný databázový stroj.
První věc, kterou musíme udělat, abychom vytvořili spojení JDBC je určit, který je motor, ke kterému chceme vytvořit připojení, a poté získat potřebné třídy pro uvedené připojení, v tomto případě se chystáme vytvořit připojení MySQL„Tento motor je lehký, bezplatný a multiplatformní, takže jej můžeme nainstalovat oba do Windows, Linux nebo Mac.
Konektor / J je sada tříd nabízených vývojovým týmem MySQL, s nimi můžeme udělat JDBC spolupracovat s tím Databáze relační, abychom jej mohli začlenit do našeho projektu, musíme postupovat podle následujících kroků.
1- Musíme také stáhnout soubor odpovídající naší platformě Okna nebo pro ostatní z oficiálních webových stránek MySQL V následujícím odkazu.

ZVĚTŠIT

2- V tomto tutoriálu budeme pracovat pod Windows, takže pro jeho implementaci v našich příkladech to uděláme za běhu pro větší snadnost, ale když si stáhneme balíček, nainstalujeme jej, aby byl k dispozici na našem počítači.
3- Nyní přistoupíme k testování, zda vše na našem počítači funguje správně, za tímto účelem vytvoříme malý kód, kde uvidíme, zda konektor / J byl úspěšně načten do našeho systému, proto použijeme následující kód:
 veřejná třída ConnectionTest {public static void main (String [] args) {try {Class c = Class.forName ("com.mysql.jdbc.Driver"); System.out.println ("načtená třída:" + c.getName ()); } catch (ClassNotFoundException ex) {System.err.println (ex); }}} 

4- Chcete -li spustit tento příklad, musíme zahrnout závislost, doporučujeme mít .sklenice ve stejné cestě našeho souboru TestConexion.java. S tímto krytým pokračujeme v kompilaci našeho souboru, otevřeme konzolu a s instrukcemi javac a přidáním .sklenice do třídní cesta za běhu pomocí příkazu -cp Můžeme to udělat, podívejme se na příkazový řádek:
 javac -cp mysql-connector-java-5.1.34-bin.jar ConnectionTest.java 

5- Nakonec ke spuštění našeho souboru potřebujeme provést pouze následující instrukci:
java -cp mysql-connector-java-5.1.34-bin.jar TestConnection

Pokud máme v konzole výsledek jako následující, můžeme začít pracovat s operacemi do Databáze:

ZVĚTŠIT

Dalším krokem, který musíme udělat, je vytvořit efektivní spojení s naším DatabázeAbychom to mohli usnadnit, vytvoříme databázi s názvem test a pro vytvoření tabulky a vložení některých testovacích záznamů použijeme následující skript, což urychlí vývoj výukového programu:

VYTVOŘIT TABULKU, POKUD NEJSOU EXISTUJÍ `uživatelé` (
`id` bigint (20) NOT NULL AUTO_INCREMENT,
`name` varchar (255) NOT NULL,
`date` date NOT NULL,
`state` int (11) NOT NULL,
PRIMARY KEY (`id`)
) MOTOR = VÝCHOZÍ CHARSET InnoDB = latin1 AUTO_INCREMENT = 3;
VLOŽIT DO HODNOTY `users` (` id`, `name`,` date`, `status`)
(1, 'Uživatel 1', '2015-01-01', 1),
(2, 'Uživatel 2', '2015-01-01', 1);

Nyní v následujícím kódu Jáva zaměříme se na navázání spojení s Databáze, za to s a zkus chytit blok Ověříme, že je efektivní a bez chyb, a pokud bylo připojení navázáno, vytiskneme zprávu o úspěchu, uvidíme:
 import java.sql.Connection; import java.sql.DriverManager; veřejná třída ConnectionTest {private static final String path = "jdbc: mysql: // localhost"; private static final String user = "náš uživatel"; private static final String heslo = "naše heslo"; public static void main (String [] args) {try {Connection con = DriverManager.getConnection (cesta, uživatel, heslo); System.out.println ("Připojení úspěšné"); } catch (Výjimka e) {e.printStackTrace (); }}} 

Z tohoto kódu vidíme, že musíme z balíčku importovat dvě knihovny java.sql, jeden je Spojení která má na starosti správu všech aktivit, aby mohla komunikovat s databází a druhá je Správce zařízení který je zodpovědný za zajištění způsobu, jakým s ním budeme komunikovat. Pokud jsme postupovali správně, měli bychom při spuštění našeho příkladu v konzole vidět následující zprávu:

ZVĚTŠIT

Máme vše připraveno k zahájení testování našich dotazů, k tomu budeme potřebovat několik věcí, první, co již máme, je objekt, který vytváří spojení s Databáze, pak budeme muset importovat balíčky Prohlášení Y ResultSet pomocí kterého můžeme nejprve odeslat dotazy a poté získat stejnou odpověď, nakonec projdeme objekt ResultSet kde ukážeme data vložená do tabulky a před ukončením programu musíme zavřít každý z objektů, které jsme vytvořili, tímto způsobem zaručíme integritu našich dat. Podívejme se na kód, který ukazuje, co je vysvětleno:
 import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; veřejná třída ConnectionTest {private static final String path = "jdbc: mysql: // localhost / test"; private static final String user = "náš uživatel"; private static final String heslo = "naše heslo"; public static void main (String [] args) {try {Connection con = DriverManager.getConnection (cesta, uživatel, heslo); Dotaz na prohlášení = con.createStatement (); System.out.println ("Připojení úspěšné"); ResultSet result = query.executeQuery ("SELECT * FROM users"); while (result.next ()) {String name = result.getString ("name"); Datum řetězce = result.getString ("datum"); System.out.println ("Jméno:" + jméno + "Datum záznamu:" + datum); } result.close (); query.close (); con.close (); } catch (Výjimka e) {e.printStackTrace (); }}} 

Je důležité to zmínit v našem atributu trasa Upravili jsme to a název souboru Databáze volání test kde musíme mít vytvořenou naši tabulku uživatelů, zkompilovat náš soubor a spustit, výsledek konzoly by byl takový, jak je vidět na následujícím obrázku:

ZVĚTŠIT

Když jsme sledovali příklad připojení a dotazy na databázi, vidíme, že musíme použít obrázek nazvaný Připravit prohlášení to nám usnadňuje práci tím, že necháváme připravené dotazy, abychom je mohli spouštět vícekrát, aniž bychom je museli vytvářet znovu a znovu, abychom dosáhli této dynamiky, nahradíme proměnnými hodnoty, které potřebujeme změnit, a poté, když spustíme dotazu předáme skutečné hodnoty k použití.
VýhodaTo má několik výhod, již jsme řekli, že první je možnost něco použít, aniž by se to opakovalo, ale je to také pro bezpečnost, protože to nám umožňuje zacházet s hodnotami, které mohou pocházet z uživatelských vstupů, abychom se vyhnuli útoku na naše Databáze, kromě toho můžeme také usnadnit čitelnost našeho programu.
V následujícím příkladu vytvoříme dotaz pomocí Připravené prohlášení, takže jej lze během našeho programu použít několikrát. Podívejme se na výsledný kód:
 import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.PreparedStatement; veřejná třída PreparedStatementTest {private static final String path = "jdbc: mysql: // localhost / test"; private static final String user = "náš uživatel"; private static final String heslo = "naše heslo"; public static void main (String [] args) {try {Connection con = DriverManager.getConnection (cesta, uživatel, heslo); PreparedStatement query = con.prepareStatement ("SELECT * FROM users Where id = ?;"); System.out.println ("Připojení úspěšné"); query.setInt (1, 1); ResultSet result = query.executeQuery (); while (result.next ()) {String name = result.getString ("name"); Datum řetězce = result.getString ("datum"); System.out.println ("Jméno:" + jméno + "Datum záznamu:" + datum); } result.close (); query.close (); con.close (); } catch (Výjimka e) {e.printStackTrace (); }}} 

Všimli jsme si toho pomocí metody setInt Pomocí objektu dotazu můžeme předat potřebný parametr pro dotaz, čímž jej můžeme oddělit od provádění dotazu, čímž získáme přenositelnost a snadné čtení. Na závěr zkompilováme a spustíme náš program:

ZVĚTŠIT

Tím tento tutoriál dokončíme, protože vidíme možnosti, se kterými lze pracovat Databáze v Jáva Jsou velmi zajímavé, protože nám umožňují začlenit do našich aplikací flexibilitu a univerzálnost. Nejdůležitější je, že pokud máme zkušenosti s jinými jazyky, určitě se zde uplatní.

Vám pomůže rozvoji místa, sdílet stránku s přáteli

wave wave wave wave wave