Bevezetés a Java JDBC RowSet felületébe
Most jelentettem be az újat Tanulj tavaszt tanfolyam, amelynek középpontjában az 5. tavasz és a tavaszi bakancs 2 alapjai állnak:
>> ELLENŐRIZZE A FOLYAMATOT1. Áttekintés
Ebben a cikkben áttekintjük a JDBC-t RowSet felület. Egy JDBC RowSet Az objektum táblázatos adatokat tartalmaz olyan stílusban, amely jobban alkalmazkodóvá és egyszerűbbé teszi az eredménykészletet.
Az Oracle ötöt definiált RowSet interfészek a RowSet:
- JdbcRowSet
- CachedRowSet
- WebRowSet
- JoinRowSet
- FilteredRowSet
Ebben az oktatóanyagban áttekintjük ezek használatát RowSet interfészek.
2. JdbcRowSet
Kezdjük a JdbcRowSet - egyszerűen létrehozunk egyet az áthaladással Kapcsolat kifogásolja a JdbcRowSetImpl:
JdbcRowSet jdbcRS = new JdbcRowSetImpl (conn); jdbcRS.setType (ResultSet.TYPE_SCROLL_INSENSITIVE); String sql = "SELECT * FROM customers"; jdbcRS.setCommand (sql); jdbcRS.execute (); jdbcRS.addRowSetListener (új példaListener ()); míg (jdbcRS.next ()) {// minden következő hívás generál egy cursorMoved eseményt System.out.println ("id =" + jdbcRS.getString (1)); System.out.println ("név =" + jdbcRS.getString (2)); }
A fenti példában jdbcRs nem tartalmazott adatokat, amíg meg nem határoztuk az SQL utasítást a módszerrel setCommand majd lefuttatta a módszert végrehajtani.
Figyelje meg azt is, hogy az eseménykezelés elvégzése érdekében a RowSetListener ba,-be JdbcRowSet.
JdbcRowSet más, mint a másik négy RowSet megvalósítások - mert mindig kapcsolódik az adatbázishoz és emiatt hasonlít leginkább a ResultSet tárgy.
3. CachedRowSet
A CachedRowSet az objektum egyedi, mert anélkül is működhet, hogy csatlakozna az adatforrásához. Ezt hívjuk „leválasztottnak RowSet tárgy".
CachedRowSet nevét annak a ténynek köszönheti, hogy tárolja adatait a memóriában, hogy az adatbázisban tárolt adatok helyett saját adataival működjön.
Mint CachedRowSet interfész a szuper interfész az összes leválasztott RowSet objektumhoz, az alább áttekintett kód az a-ra is vonatkozik WebRowSet, JoinRowSet, vagy FilteredRowSet ugyanolyan jól:
CachedRowSet crs = new CachedRowSetImpl (); crs.setUsername (felhasználónév); crs.setPassword (jelszó); crs.setUrl (url); crs.setCommand (sql); crs.execute (); crs.addRowSetListener (új példaListener ()); while (crs.next ()) {if (crs.getInt ("id") == 1) {System.out.println ("A CRS megtalálta az 1. ügyfelet, és eltávolítja a rekordot."); crs.deleteRow (); szünet; }}
4. WebRowSet
Ezután vessünk egy pillantást a WebRowSet.
Ez azért is egyedülálló, mert amellett, hogy felajánlja a CachedRowSet tárgy, be tudja írni magát egy XML dokumentumbat, és el is tudja olvasni azt az XML dokumentumot, hogy visszaalakítsa magát a-vá WebRowSet:
WebRowSet wrs = új WebRowSetImpl (); wrs.setUsername (felhasználónév); wrs.setPassword (jelszó); wrs.setUrl (url); wrs.setCommand (sql); wrs.execute (); FileOutputStream ostream = új FileOutputStream ("customers.xml"); wrs.writeXml (ostream);
Használni a writeXml módszerrel megírjuk az a aktuális állapotát WebRowSet objektum egy XML dokumentum ellen.
A writeXml módszer an OutputStream objektum, karakterek helyett bájtban írunk, ami nagyon hasznos lehet az adatok minden formájának kezelésében.
5. JoinRowSet
JoinRowSet hozzunk létre egy SQL-t CSATLAKOZIK között RowSet objektumok, amikor ezek a memóriában vannak. Ez azért jelentős, mert megtakarít bennünket egy vagy több kapcsolat létrehozásának szükségességéből:
CachedRowSetImpl ügyfelek = new CachedRowSetImpl (); // a CachedRowSet beállításainak konfigurálása CachedRowSetImpl Associates = new CachedRowSetImpl (); // a CachedRowSet beállításainak konfigurálása JoinRowSet jrs = new JoinRowSetImpl (); jrs.addRowSet (ügyfelek, azonosító); jrs.addRowSet (munkatársak, azonosító);
Mert mindegyik RowSet objektum hozzáadva a JoinRowSet objektumnak egyezési oszlopra van szüksége, arra az oszlopra, amelyen az SQL CSATLAKOZIK alapul, meghatározzuk „Id” ban,-ben addRowSet módszer.
Ne feledje, hogy az oszlop neve helyett az oszlop számát is használhattuk volna.
6. FilteredRowSet
Végül a FilteredRowSetlevághatjuk a látható sorok számát a RowSet objektumot, hogy csak azokkal az adatokkal dolgozhassunk, amelyek relevánsak a tevékenységünk szempontjából.
Döntenünk kell arról, hogy miként akarjuk „szűrni” az adatokat a Állítmány felület:
public class FilterExample megvalósítja a Predicate {private Pattern pattern; public FilterExample (String regexQuery) {if (regexQuery! = null &&! regexQuery.isEmpty ()) {pattern = Pattern.compile (regexQuery); }} nyilvános logikai érték (RowSet rs) {try {if (! rs.isAfterLast ()) {String name = rs.getString ("name"); System.out.println (String.format ("A"% s "minta keresése% s-ben, pattern.toString (), név)); Matcher matcher = minta.matcher (név); return matcher.matches (); } else return false; } catch (e kivétel) {e.printStackTrace (); return false; }} // módszerek a hibák kezelésére}
Most ezt a szűrőt alkalmazzuk a FilteredRowSet tárgy:
RowSetFactory rsf = RowSetProvider.newFactory (); FilteredRowSet frs = rsf.createFilteredRowSet (); frs.setCommand ("select * from customers"); frs.execute (conn); frs.setFilter (új FilterExample ("^ [A-C]. *")); ResultSetMetaData rsmd = frs.getMetaData (); int oszlopszám = rsmd.getColumnCount (); while (frs.next ()) {for (int i = 1; i <= oszlopszám; i ++) {System.out.println (rsmd.getColumnLabel (i) + "=" + frs.getObject (i) + "" ); }}
7. Következtetés
Ez a gyors bemutató a RowSet interfész elérhető a JDK-ban.
Megbeszéltük az egyes megvalósítások konfigurációját, és megemlítettük a közöttük lévő különbségeket.
Mint rámutattunk, csak az egyik RowSet megvalósítások kapcsolódnak RowSet tárgy - az JdbcRowSet. A másik négyet leválasztják RowSet tárgyakat.
És mint mindig, a cikk teljes kódja megtalálható a Github oldalon.
Java alsó