Úvod do rozhrania JDBC RowSet v jazyku Java

Java Top

Práve som oznámil nové Naučte sa jar kurz zameraný na základy jari 5 a Spring Boot 2:

>> SKONTROLUJTE KURZ

1. 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

Práve som oznámil nové Naučte sa jar kurz zameraný na základy jari 5 a Spring Boot 2:

>> SKONTROLUJTE KURZ

$config[zx-auto] not found$config[zx-overlay] not found