|
Java 2 Útikalauz programozóknak 5.0 | ||||||||
ELŐZŐ CSOMAG KÖVETKEZŐ CSOMAG | MEGOSZTVA EGY LAPON |
Adatbázis-programozásfejezet példaprogramjai.
Tovább lásd:
részletes leírás
Osztályok | |
---|---|
Dolgozo | Példatípus (dolgozó) a felhasználói SQL típusok használatának szemléltetésére. |
JDBCTeszt | Példaprogram a JDBC használatának szemléltetésére. |
Lakhely | Példatípus (lakhely) a felhasználói SQL típusok használatának szemléltetésére. |
Penz | Példatípus (pénzösszeg) a felhasználói SQL típusok használatának szemléltetésére. |
Rovidnev | Példatípus (szöveges név) a felhasználói SQL típusok használatának szemléltetésére. |
Szemely | Példatípus (személy) a felhasználói SQL típusok használatának szemléltetésére. |
Teljesnev | Példatípus (személynév) a felhasználói SQL típusok használatának szemléltetésére. |
Az Adatbázis-programozás
fejezet példaprogramjai.
A Java nyelv hálózati szolgáltatásai miatt ideálisan megfelel kliens-szerver architektúrájú adatbázis-kezelő programok létrehozására. Ezért felmerült az igény a legkülönfélébb adatbázisok elérési lehetőségére, amit a JDBC biztosít.Tartalomjegyzék a hivatkozott referenciákkal és felhasznált képekkel:
Driver
interfész
DriverManager
osztály
Connection
interfész
DriverPropertyInfo
osztály
DataSource
interfész
ConnectionPoolDataSource
interfész
PooledConnection
interfész
ConnectionEventListener
interfész
ConnectionEvent
osztály
Savepoint
interfész
XADataSource
interfész
XAConnection
interfész
DatabaseMetaData
interfész
SQLExcepiton
kivétel
SQLWarning
kivétel
Types
osztály
DISTINCT
) felhasználói SQL típus
STRUCT
) felhasználói SQL típus
Struct
interfész
Statement
interfész
Statement
interfész
Statement
létrehozása
Statement
végrehajtása
Statement
megszakítása
Statement
befejeződése
PreparedStatement
interfész
PreparedStatement
interfész
PreparedStatement
létrehozása
PreparedStatement
végrehajtása
ParameterMetaData
interfész
CallableStatement
interfész
CallableStatement
interfész
CallableStatement
létrehozása
CallableStatement
végrehajtása
BatchUpdateException
kivétel
int[] updateCounts; Connection con=... // a felhasználandó adatbáziskapcsolat Statement stmt=null; // a végrehajtandó SQL utasítás try { con.setAutoCommit(false); // automatikus véglegesítés kikapcsolva stmt = con.createStatement(); // Statement létrehozása stmt.addBatch("CREATE TABLE NEVEK OF TELJESNÉV"); // tábla létrehozása stmt.addBatch("INSERT INTO NEVEK VALUES ('Gábor', 'Dénes')"); // feltöltése stmt.addBatch("INSERT INTO NEVEK VALUES ('Máté', 'Barbara')"); stmt.addBatch("INSERT INTO NEVEK VALUES ('Csilla', 'Péter')"); stmt.addBatch("DELETE FROM NEVEK"); // és ürítése updateCounts = stmt.executeBatch(); // eredmény: {0, 1, 1, 1, 3} stmt = con.prepareStatement( // ismétlődő feltöltés "INSERT INTO NEVEK VALUES (?, ?)"); //előfordított utasítással ((PreparedStatement)stmt).setString(1, "Névtelen"); for (int i=1; i<=10; i++) { ((PreparedStatement)stmt).setString(2, "Felhasználó"+i ); stmt.addBatch(); } updateCounts = stmt.executeBatch(); // eredmény: {1,1,1,1,1,1,1,1,1,1} stmt.addBatch("SELECT * FROM NEVEK"); // itt még nem, de updateCounts = stmt.executeBatch(); //itt Exception (mivel select nem lehet) } catch (BatchUpdateException bue) { // hibaüzenet megjelenítése System.err.println("BatchUpdateException: " + bue.getMessage()); System.err.println("SQLState: " + bue.getSQLState()); System.err.println("ErrorCode: " + bue.getErrorCode()); System.err.println("Sikeres végrehajtások sormódosítási számai:"); updateCounts = bue.getUpdateCounts(); for (int i=1; i<=updateCounts.length; i++) System.err.println("\t" + i + ".: " + updateCounts[i]); } catch (SQLException se) { System.err.println("SQLException: " + se.getMessage()); System.err.println("SQLState: " + se.getSQLState()); System.err.println("ErrorCode: " + se.getErrorCode()); } finally { // erőforrások felszabadítása if (stmt != null) try { // Statement lezárása stmt.close(); } catch (SQLException se) {} if (con != null) try { // adatbáziskapcsolat lezárása con.close(); } catch (SQLException se) {} } |
ResultSet
interfész
ResultSetMetaData
interfész
RowSet
interfész
RowSetInternal
interfész
RowSetReader
interfész
RowSetWriter
interfész
RowSetMetaData
interfész
RowSetListener
interfész
RowSetEvent
osztály
javax.sql.rowset
csomag
BaseRowSet
osztály
JdbcRowSet
interfész
RowSetWarning
kivétel
CachedRowSet
interfész
javax.sql.rowset.spi
csomag
SyncProvider
osztály
SyncProviderException
kivétel
SyncResolver
interfész
SyncFactory
osztály
Connection con = ... CachedRowSet crs = ... crs.setPageSize(100); //100 soronként lapozunk crs.execute(con); //első lap feltöltése do { while(crs.next()) { ... //sorfeldolgozás } } while(crs.nextPage()); //lapozás \end{verbatim} |
Az alábbi kóddal a véglegesítéskor fellépő szinkronizálási konfliktusokat saját magunk is feloldhatjuk:
Connection con = ... CachedRowSet crs = ... try { crs.acceptChanges(con); //változások visszaírása az adatforrásba } catch (SyncProviderException spe) { //szinkronizálási hibák feldolgozása SyncResolver resolver = spe.getSyncResolver(); Object régiérték; //az adatforrásból jövő aktuális érték Object ütközőérték: //a szinkronizálási ütközést kiváltó érték Object újérték: //a hibát feloldó új érték while(resolver.nextConflict()) { //ütközések végigolvasása if (resolver.getStatus() == SyncResolver.UPDATE_ROW_CONFLICT) {//módosít crs.absolute(resolver.getRow()); //eredeti adatforrásban pozícionál int oszlopok = crs.getMetaData().getColumnCount(); //oszlopok száma for (int oszlop = 1; oszlop <= oszlopok; oszlop++) { ütközőérték = resolver.getConflictValue(oszlop); if (ütközőérték != null) { //van ütközés az oszlopban régiérték = crs.getObject(oszlop); újérték = ... //ütközés feloldása resolver.setResolvedValue(oszlop, újérték); } } } } } |
WebRowSet
interfész
FilteredRowSet
interfész
Predicate
interfész
JoinRowSet
interfész
Joinable
interfész
JDBCTeszt
példaapplet grafikus felhasználói felülete
|
Java 2 Útikalauz programozóknak 5.0 | ||||||||
ELŐZŐ CSOMAG KÖVETKEZŐ CSOMAG | MEGOSZTVA EGY LAPON |