Vitajte na [www.pocitac.win] Pripojiť k domovskej stránke Obľúbené stránky

Domáce Hardware Siete Programovanie Softvér Otázka Systémy

JDBC ResultSet Príklad

Java Database Connectivity ( JDBC ) Application Programmer Interface ( API ) poskytuje triedy pre pripojenie a prístup k tabuľkových dát , vrátane relačných databáz . Trieda ResultSet poskytuje metódy pre načítanie , navigáciu a manipuláciu s výsledkami databázových dotazov . Príklad Životné prostredie

V nasledujúcich príkladoch , budete pripojení k databáze s názvom " zamestnanci " , jedna tabuľka v tejto databáze s názvom " ľudia " obsahujúce tri stĺpce : " FIRST_NAME " , " last_name " , " titul , " a " mzda " . Váš tabuľka obsahuje nasledujúce záznamy :

Bob , Smith , riaditeľ , 23.50Ted , Anderson , Designer , 38.00Fred , Johnson , programátor , 32.25Alice , Anderson , inžinier , 46.75Bob , Clark , Interná , 15.00Carol , smith , manažér , 42.50
Query Database

Vytvorenie databázy pripojenie a vytvoriť vyhlásenie objekt volaním createStatement naše spojenie objektu ( ) funkcie .

String url = " jdbc : mysql ://localhost /zamestnancov " ; Connection conn = DriverManager.getConnection ( url , " meno " , " heslo " ) ; Vyhlásenie st = conn.createStatement ( ) ;

Vytvoriť reťazec dotazu obsahujúce platný príkaz SQL dotazu

String query = " SELECT FIRST_NAME , last_name od ľudí " ; .

Vytvorte ResultSet objektu pomocou príkazu objekt na vykonanie dotazu do databázy .

výsledný rs = st.executeQuery ( query ) ;

ResultSet objektu , rs , teraz obsahuje výsledky dotazu : " FIRST_NAME " a " last_name " stĺpce pre každý záznam v " ľudia " stôl .
Prístup k dotazu Výsledky

ResultSet objekt má kurzor , ktorý spočiatku neukazuje žiadne záznamy . Volajte prvá funkcia výsledný súbor je ( ) presuňte kurzor na prvý záznam v držbe ResultSet objekte . Get funkcie výsledný poskytujú prístup k obsahu jednotlivých stĺpcov pomocou názvu stĺpca z tabuľky databázy . " . Last_name " Použiť getString ( String columnLabel ) načítať obsah VARCHAR stĺpca " FIRST_NAME " a

rs.first ( ) ; String fn = rs.getString ( " FIRST_NAME " ) ; String ln = rs . getString ( " last_name " ) ; System.out.println ( ln + " , " + fn ) ;

posledný riadok vyššie tlačí :

Smith , Bob

volanie posledného funkciu výsledný súbor je ( ) presuňte kurzor na posledný záznam v držbe ResultSet objekte

rs.last ( ) ; . fn = rs.getString ( " FIRST_NAME " ) ; ln = rs.getString ( " last_name " ) ; System.out.println ( ln + " , " + fn ) ;

posledný riadok vyššie výtlačkov :

Smith , Carol
Stepping prostredníctvom výsledkov dotazu

Typicky , budete chcieť , aby prístup k všetkým výsledky vrátené dotazom . Ďalšie funkcie výsledný súbor je ( ) presunie kurzor vpred na ďalší záznam . Keď je kurzor presunutý za koniec sady výsledkov , funkcia next ( ) vracia NULL , čo vám umožní použiť návratovú hodnotu uniknúť z cyklu while klipart

Prehlásenie ulice = conn.createStatement ( ) . ; string query = " SELECT * FROM ľudí tam , kde mzda > 30 " ; výsledný rs = st.executeQuery ( query ) ;

while ( rs.next ( ) ) { string fn = rs.getString ( " FIRST_NAME " ) , String ln = rs.getString ( " last_name " ) ; System.out.println ( fn + " " + ln ) ; }

kroky , zatiaľ čo slučka cez každý záznam v sade výsledkov , a tlačí : predchádzajúce funkcie

Ted AndersonFred JohnsonAlice AndersonCarol Smith

výsledný súbor je ( ) presunie kurzor späť jeden záznam v sade výsledkov , a vráti hodnotu NULL , ak sa kurzor presunul pred prvým záznamu . To vám umožní prejsť dozadu sade výsledkov a používať návratovú hodnotu z funkcie predchádzajúci ( ) , aby sa vyhli cyklu while . Pokračovaním vyššie uvedený príklad , kurzor ostal umiestnený za posledný záznam v sade výsledkov . Použite predchádzajúcej funkcie ( ) , chôdza pospiatky skrze výsledkov dotazu , tlač na titul a mzdové stĺpce z každého záznamu . Funkcia výsledný súbor je getFloat ( String columnLabel ) použiť pre prístup k obsahu FLOAT stĺpci " mzdy " :

while ( rs.previous ( ) ) { String t = rs.getString ( " title " ) ; int w = rs.getFloat ( " mzda " ) ; System.out.println ( fn + " $ " + ln ) ; }

kroky , zatiaľ čo slučka dozadu cez každý záznam v sade výsledkov , a tlačí :

Manažér $ 42.50Engineer $ 46.75Programmer $ 32.25Designer 38,00 dolárov
Random Access Navigácia

ResultSet ponúka funkcie pre pohyb kurzora ľubovoľne medzi záznamami v sade výsledkov . Načítať všetky záznamy obsiahnuté v " ľudovej " tabuľky , zoradené podľa " last_name " a potom " FIRST_NAME " stĺpca :

Vyhlásenie st = conn.createStatement ( ) ; String query = " SELECT * FROM ľudí, aby o last_name , FIRST_NAME " ; výsledný rs = st.executeQuery ( query ) ;

Výsledná sada obsahuje :

Alice , Anderson , inžinier , 46.75Ted , Anderson , Designer , 38.00Bob , Clark , Intern , 15.00Fred , Johnson , programátor , 32.25Bob , Smith , riaditeľ , 23.50Carol , Smith , manažér , 42.50

Použite funkciu absolútna ( int row ) nastavte kurzor na konkrétny riadok vo výslednej sade . Kladná hodnota parametra riadku sa presuniete kurzor dopredu z obdobia pred začiatkom výsledkovej sady . Záporná hodnota parametra riadku sa presuniete kurzor späť od konca sady výsledkov :

rs.absolute ( 3 ) ; String fn = rs.getString ( " FIRST_NAME " ) ; String ln = rs . GetString ( " last_name " ) ; System.out.println ( fn + " " + ln ) ;

rs.absolute ( 5 ) , String fn = rs.getString ( " FIRST_NAME " ) ; String ln = rs . getString ( " last_name " ) ; System.out.println ( fn + " " + ln ) ;

rs.absolute ( -1 ) ; String fn = rs.getString ( " FIRST_NAME " ) ; String ln = rs.getString ( " last_name " ) ; System.out.println ( fn + " " + ln ) ;

rs.absolute ( -3 ) ; String fn = rs.getString ( " FIRST_NAME " ) ; string ln = rs.getString ( " last_name " ) ; System.out.println ( fn + " " + ln ) ;

Tlačové vyhlásenie uvedené výstupu :

Bob ClarkBob SmithCarol SmithFred Johnson

Pokračovanie , použite relatívna ( int riadok ) pre pohyb kurzora dopredu alebo dozadu vzhľadom k aktuálnej pozícii . Kurzor zostal umiestnený na štvrtom záznamu sady výsledkov . Pohyb dopredu dva riadky , potom spätné štyri riadky :

rs.relative ( 2 ) , fn = rs.getString ( " FIRST_NAME " ) ; ln = rs.getString ( " last_name " ) ; System.out . println ( fn + " " + ln ) ;

rs.relative ( -4 ) , fn = rs.getString ( " FIRST_NAME " ) ; ln = rs.getString ( " last_name " ) ; System.out . println ( fn + " " + ln ) ;

Tlačové vyhlásenie vo vyššie uvedenom kóde výstupu :

Carol SmithTed Anderson
Úprava výsledky

Upraviť obsah sady výsledkov pomocou aktualizačný funkcie výsledný súbor je . Použite updateString ( String columnLabel , String x ) zmeniť všetky záznamy zodpovedajúce " Bob " v " FIRST_NAME " stĺpci " Robert . " Použite funkciu beforeFirst ( ) obnoviť kurzor pred začiatkom množinu výsledkov , takže si môžete prejsť aktualizované výsledok nastaviť a vytlačiť nové hodnoty :

String query = " SELECT * FROM ľudí " ; výsledný rs = st.executeQuery ( query ) ;

while ( rs.next ( ) ) { String fn = rs.getString ( " FIRST_NAME " ) ; if ( fn.equals ( " Bob " ) { rs.updateString ( " FIRST_NAME " , " Robert " ) ; } } rs.beforeFirst ( ) , zatiaľ čo ( rs.next ( ) ) { String fn = rs.getString ( " FIRST_NAME " ) ; String ln = rs.getString ( " last_name " ) ; System.out.println ( fn + " " + ln ) ; }

Nasledujúce výsledky sú tlačené :

Robert SmithTed AndersonFred JohnsonAlice AndersonRobert ClarkCarol Smith
manipulácia chyby

Mnoho funkcií výsledný súbor je hodiť SQL . Najlepšia prax velí hádzať chyby by mali byť zachytené a spracované . SQLEXCEPTION posolstvo môže byť veľmi užitočné pri ladení spojenia a otázok chyby . Obsahujú pripojenie a kód dotazu na try - catch blokov

try { String url = " jdbc : mysql ://localhost /zamestnanca " . Spojenie conn = DriverManager.getConnection ( url , " meno " , " heslo " ) ; Vyhlásenie st = conn . createStatement ( ) ;

String query = " SELECT FIRST_NAME , last_name od ľudí " ; výsledný rs = st.executeQuery ( query ) ;

while ( rs.next ( ) ) { String fn = rs.getString ( " FIRST_NAME " ) ; String ln = rs.getString ( " last_name " ) ; System.out.println ( fn + " " + ln ) ; } } catch ( SQLException ex ) { System.err.println ( ex.getMessage ( ) ) ; . }
Clean Up

ResultSet objektu je automaticky ukončená po vyhlásení objekt použitý na vytvorenie je blízko Keď uzavretý , ResultSet objekt sa automaticky uvoľní zdroje Vynútiť ResultSet objektu uvoľniť všetky JDBC a databázy zdrojov je držať volaním close ( ) funkcia Zatvorte ResultSet objektu , RS , z vyššie uvedených príkladov : ..

rs.Close ( ) ;

Najnovšie články

Copyright © počítačové znalosti Všetky práva vyhradené