Java Database Connection: Helia / Martti Laiho, 1998-2000
Java Database Connection: Helia / Martti Laiho, 1998-2000
Literature/sources:
• Designed by JavaSoft
• based on ISO SQL/CLI and Microsoft ODBC API
• provided in java.sql package
• 4 types of JDBC Driver implementation
INT[EGER] int
SMALLINT short
NUMERIC (m, n) java.sql.BigDecimal
DECIMAL (m, n) java.sql.BigDecimal
DEC (m, n) java.sql.BigDecimal
FLOAT (n) double
REAL float
DOUBLE double
CHAR[ACTER] (n) String
VARCHAR (n) String
DATE java.sql.Date
TIME java.sql.Time
TIMESTAMP java.sql.Timestamp
Driver getTables(…)
…
...
s rs.getFloat()
n
getConnection
Connection
createStatement
Statement
executeQuery
ResultSet
next
getString
getInt
...
{ [ Until next returns false ] }
close
close
close
getConnection
Connection
prepareCall
Callable
Statement
registerOutputParameter
parameters marked in the
... procedures call by ? placeholders
are identified by the corresponding
execute order numbers 1, 2, .. of the
placeholders
getString
getInt
...
close
close
Default: AutoCommit
Isolation Levels:
0 TRANSACTION_NONE
1 TRANSACTION_READ_UNCOMMITTED
2 TRANSACTION_READ_COMMITTED
3 TRANSACTION_REAPEATABLE_READ
4 TRANSACTION_SERIALIZABLE
Methods:
con.setAutoCommit(false);
level = con.getTransactionIsolation();
con.setTransactionIsolation(level);
con.commit();
con.rollback();
try {
jdbc method call ...
}
catch (SQLException ex) {
System.out.println (”\nSQLException:");
while (ex != null) {
System.out.println (”SQLState: "+ex.getSQLState());
System.out.println (”Message: "+ ex.getMessage());
System.out.println (”Vendor: "+ ex.getErrorCode());
ex = ex.getNextException();
}
}
catch (java.lang.Exception ex) {
System.out.println("Exception: " + ex);
ex.printStackTrace ();
}
Helia / Martti Laiho, 1998-2000
JDBC 2.0 API
• JDBC 2.0 Core API (java.sql)
– Scrollable ResultSet
– Updating by ResultSet
– Batch Updates
– New SQL-99 datatypes
• Resultset types
– TYPE_FORWARD_ONLY (~JDBC 1.0)
– TYPE_SCROLL_INSENSITIVE
– TYPE_SCROLL_SENSITIVE
• Methods
– beforeFirst() (initially)
– first()
– next() (JDBC 1.0)
– previous()
– last()
– afterLast()
– absolute (n | -n)
– relative (n | -n)
– getRow()
– isFirst() , isLast() , isBeforeFirst() , isAfterLast()
– moveToInsertRow(), moveToCurrentRow()
• Updatable
– CONCUR_READ_ONLY (~JDBC 1.0)
– CONCUR_UPDATABLE
• Methods
– updateXXX(column, value)
– …
– updateRow() or cancelRowUpdates()
moveToCurrentRow()
updateable
row
moveToInsertRow()
InsertRow()
“InsertRow buffer”
• Note:
– drivers handle deletions differently
• Methods
– addBatch(“….”)
– …
– executeBatch();
• BatchUpdateException
– JavaBeans: Rowsets
– JNDI for naming and directory interface
– Connection Pooling
– Distributed Transactions: 2PC by Java Transaction API
(JTA)