Java Database Connectivity: Porovnání verzí

Smazaný obsah Přidaný obsah
+infobox; wikifikace
m Robot: -zastaralá značka HTML
Řádek 65:
Metoda [http://download.oracle.com/javase/6/docs/api/java/lang/Class.html#forName(java.lang.String) Class.forName(String)] se používá k načtení třídy JDBC driver. Řádka kódu dole znázorňuje načtení JDBC driveru od jistého poskytovatele (some jdbs vendor). Některé JVM také požadují, aby byla příslušná třída zavedena pomocí metody [http://download.oracle.com/javase/6/docs/api/java/lang/Class.html#newInstance() .newInstance()].
 
<sourcesyntaxhighlight lang="java">
Class.forName("com.somejdbcvendor.TheirJdbcDriver");
</syntaxhighlight>
</source>
 
<sourcesyntaxhighlight lang="java">
public void connect() throws DriverNotFoundException, ConnectionFailedException {
try {
Řádek 80:
}
}
</syntaxhighlight>
</source>
 
Nezapomínejte uzavírat navázaná spojení!
<sourcesyntaxhighlight lang="java">
public void disconnect() throws DisconnectFailedException {
try {
Řádek 91:
}
}
</syntaxhighlight>
</source>
 
Od verze JDBC 4.0 není již nutné explicitně načítat JDBC drivery pomocí Class.forName(). Pro více informací klikněte na [http://onjava.com/pub/a/onjava/2006/08/02/jjdbc-4-enhancements-in-java-se-6.html JDBC 4.0 Enhancements in Java SE 6].
Řádek 98:
 
Nyní, když je třeba vytvořit JDBC připojení, použijeme jednu z metod <code>DriverManager.getConnection()</code>.
<sourcesyntaxhighlight lang="java">
Connection conn = DriverManager.getConnection(
"jdbc:somejdbcvendor:other data needed by some jdbc vendor",
Řádek 113:
}
}
</syntaxhighlight>
</source>
 
Použitá URL závisí na příslušném JDBC driveru. Vždy začíná <code>"jdbc:"protokol</code>, avšak zbytek závisí na jednotlivých výrobcích DB systémů. Když je vytvořeno připojení, musí následovat vytvoření příkazu.
<sourcesyntaxhighlight lang=java5>
Statement stmt = conn.createStatement();
try {
Řádek 128:
}
}
</syntaxhighlight>
</source>
 
Je důležité povšimnout si faktu, že Připojení (Connections), Příkazy (Statements) a Množiny Výsledků (ResultSets) často vytěžují operační systém, především sockety a popisovač souborů. V případě připojení ke vzdáleným databázovým serverům jsou vytěžovány i další součásti serveru jako např. ukazatele na současně otevřené Množiny výsledků. Je tedy nezbytně nutné zavřít (pomocí <code>close()</code>) jakýkoli JDBC objekt, který již není třeba; programátor by neměl spoléhat pouze na [[Garbage collector]]. Pominutí správného použití metody <code>close()</code> vede k nežádoucím chybám a nesprávnému chodu programu. Při práci s JDBC objekty je doporučeno používat vzorovou konstrukci try-finally (použita též v kódu nahoře).
Řádek 134:
Data jsou získána z databáze použitím databázového mechanizmu dotazů. Na následujícím příkladu je znázorněno vytvoření příkazu (Statement) a vykonání příslušného dotazu.
 
<sourcesyntaxhighlight lang="java">
Statement stmt = conn.createStatement();
try {
Řádek 157:
instead of this one that you may want just logged */ }
}
</syntaxhighlight>
</source>
 
Pokud dojde k selhání databázové operace, JDBC vyvolá [http://download.oracle.com/javase/6/docs/api/java/sql/SQLException.html SQLException]. Obvykle existuje velmi málo možností, jak zotavit program z takové chyby, kromě co nejdetailnějšího logování. Je doporučeno přeložit SQLException do Application Domain Exception, která v tomto případě vede k návratu do stavu před chybnou transakcí (transaction rollback) a k upozornění uživatele.
 
Příklad [[Databázová transakce|databázové transakce]]:
<sourcesyntaxhighlight lang="java">
boolean autoCommitDefault = conn.getAutoCommit();
try {
Řádek 176:
try { conn.setAutoCommit(autoCommitDefault); } catch (Throwable ignore) {}
}
</syntaxhighlight>
</source>
 
'''Zde jsou příklady typů hostitelské databáze, do kterých je umí převést Java pomocí svých metod:'''