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