Úvod do rozhrania JDBC RowSet v jazyku Java
Práve som oznámil nové Naučte sa jar kurz zameraný na základy jari 5 a Spring Boot 2:
>> SKONTROLUJTE KURZ1. Prehľad
V tomto článku skúmame JDBC Sada riadkov rozhranie. JDBC Sada riadkov objekt uchováva tabuľkové údaje v štýle, ktorý ich robí adaptabilnejším a jednoduchším na použitie ako množina výsledkov.
Spoločnosť Oracle definovala päť Sada riadkov rozhrania pre najčastejšie použitie a Sada riadkov:
- JdbcRowSet
- CachedRowSet
- WebRowSet
- JoinRowSet
- FilteredRowSet
V tomto tutoriáli sa dozvieme, ako ich používať Sada riadkov rozhrania.
2. JdbcRowSet
Začnime s JdbcRowSet - jednoducho vytvoríme jeden tak, že odovzdáme a Pripojenie namietať proti JdbcRowSetImpl:
JdbcRowSet jdbcRS = nový JdbcRowSetImpl (conn); jdbcRS.setType (ResultSet.TYPE_SCROLL_INSENSITIVE); Reťazec sql = "VYBERTE * OD ZÁKAZNÍKOV"; jdbcRS.setCommand (sql); jdbcRS.execute (); jdbcRS.addRowSetListener (nový ExampleListener ()); while (jdbcRS.next ()) {// každé volanie na ďalšie, generuje udalosť cursorMoved System.out.println ("id =" + jdbcRS.getString (1)); System.out.println ("name =" + jdbcRS.getString (2)); }
Vo vyššie uvedenom príklade jdbcRs neobsahovali žiadne údaje, kým sme touto metódou nedefinovali príkaz SQL setCommand a potom spustil metódu vykonať.
Všimnite si tiež, ako sme na účely spracovania udalostí pridali a RowSetListener do JdbcRowSet.
JdbcRowSet je iný ako ostatné štyri Sada riadkov implementácie - pretože je vždy pripojený k databáze a preto je to najviac podobné Sada výsledkov objekt.
3. CachedRowSet
A CachedRowSet objekt je jedinečný, pretože môže pracovať bez pripojenia k svojmu zdroju údajov. Hovoríme tomu „odpojený Sada riadkov objekt “.
CachedRowSet získa svoje meno vďaka tomu, že ukladá údaje do pamäte, aby mohol pracovať s vlastnými údajmi namiesto údajov uložených v databáze.
Ako CachedRowSet rozhranie je super rozhranie pre všetky odpojené objekty RowSet, kód, ktorý kontrolujeme nižšie, je použiteľný aj pre a WebRowSet, JoinRowSetalebo FilteredRowSerovnako dobre:
CachedRowSet crs = nový CachedRowSetImpl (); crs.setUsername (meno používateľa); crs.setPassword (heslo); crs.setUrl (url); crs.setCommand (sql); crs.execute (); crs.addRowSetListener (nový ExampleListener ()); while (crs.next ()) {if (crs.getInt ("id") == 1) {System.out.println ("CRS našiel zákazníka1 a záznam odstráni."); crs.deleteRow (); prestávka; }}
4. WebRowSet
Ďalej sa pozrime na WebRowSet.
Je to tiež jedinečné, pretože okrem ponúkania možností a CachedRowSet objekt, môže sa zapisovať do dokumentu XMLt a môže tiež prečítať tento dokument XML a previesť ho späť na a WebRowSet:
WebRowSet wrs = nový WebRowSetImpl (); wrs.setUsername (meno používateľa); wrs.setPassword (heslo); wrs.setUrl (url); wrs.setCommand (sql); wrs.execute (); FileOutputStream ostream = nový FileOutputStream ("customers.xml"); wrs.writeXml (ostream);
Pomocou writeXml metóda, zapíšeme aktuálny stav a WebRowSet vzniesť námietku proti dokumentu XML.
Prejdením okolo writeXml metóda an OutputStream objekt, namiesto znakov píšeme v bajtoch, čo môže byť celkom užitočné pri spracovávaní všetkých foriem údajov.
5. JoinRowSet
JoinRowSet umožňuje nám vytvoriť SQL PRIPOJTE SA medzi Sada riadkov objekty, keď sú v pamäti. Je to dôležité, pretože nám to ušetrí réžiu pri vytváraní jedného alebo viacerých spojení:
Zákazníci CachedRowSetImpl = nový CachedRowSetImpl (); // konfigurácia nastavení pre CachedRowSet CachedRowSetImpl associates = new CachedRowSetImpl (); // konfigurácia nastavení pre túto CachedRowSet JoinRowSet jrs = new JoinRowSetImpl (); jrs.addRowSet (zákazníci, ID); jrs.addRowSet (spolupracovníci, ID);
Pretože každý Sada riadkov objekt pridaný do a JoinRowSet objekt potrebuje stĺpec zhody, stĺpec, na ktorom je SQL PRIPOJTE SA je založený, špecifikujeme „Id“ v addRowSet metóda.
Upozorňujeme, že namiesto názvu stĺpca sme mohli použiť aj číslo stĺpca.
6. FilteredRowSet
Nakoniec FilteredRowSetPoďme znížiť počet viditeľných riadkov v Sada riadkov objekt, aby sme mohli pracovať iba s údajmi, ktoré sú relevantné k tomu, čo robíme.
Rozhodneme sa, ako chceme „filtrovať“ údaje pomocou implementácie Predikát rozhranie:
verejná trieda FilterExample implementuje Predicate {private Pattern pattern; public FilterExample (String regexQuery) {if (regexQuery! = null &&! regexQuery.isEmpty ()) {pattern = Pattern.compile (regexQuery); }} public boolean evaluate (RowSet rs) {try {if (! rs.isAfterLast ()) {String name = rs.getString ("name"); System.out.println (String.format ("Hľadá sa vzor '% s' v% s", pattern.toString (), meno)); Matcher matcher = pattern.matcher (meno); návrat matcher.matches (); } else return false; } catch (Výnimka e) {e.printStackTrace (); návrat nepravdivý; }} // metódy riešenia chýb}
Teraz použijeme tento filter na a FilteredRowSet objekt:
RowSetFactory rsf = RowSetProvider.newFactory (); FilteredRowSet frs = rsf.createFilteredRowSet (); frs.setCommand ("vybrať * od zákazníkov"); frs.execute (conn); frs.setFilter (nový FilterExample ("^ [A-C]. *")); ResultSetMetaData rsmd = frs.getMetaData (); int columncount = rsmd.getColumnCount (); while (frs.next ()) {for (int i = 1; i <= columncount; i ++) {System.out.println (rsmd.getColumnLabel (i) + "=" + frs.getObject (i) + "" ); }}
7. Záver
Tento rýchly tutoriál sa venoval piatim štandardným implementáciám Sada riadkov rozhranie dostupné v JDK.
Diskutovali sme o konfigurácii každej implementácie a spomenuli sme rozdiely medzi nimi.
Ako sme zdôraznili, iba jeden z Sada riadkov implementácií je spojené Sada riadkov objekt - JdbcRowSet. Ďalšie štyri sú odpojené Sada riadkov predmety.
Celý kód tohto článku nájdete ako vždy na serveri Github.
Java dole