|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||
java.lang.Object | +--safejdbc.SQLExecuter
This is probably the most important class within the SafeJDBC framework, because this class provides methods to actually access the database.
| Constructor Summary | |
SQLExecuter(ConnectionProvider conprovider)
To create an SQLExecuter instance a ConnectionProvider is needed. |
|
| Method Summary | |
void |
executeTX(TXCodeBlock txCodeBlock)
Use this method, to execute several database calls in a single transaction. |
void |
query(java.lang.String prepSql,
FillingCommand cmd,
ResultSetProcessor rsProcessor)
Use this method to execute SQL-Query-Statements such as select from. |
void |
query(java.lang.String sqlStr,
ResultSetProcessor rsProcessor)
Use this method to execute SQL-Query-Statements such as select from. Example: sql.query("SELECT id, name FROM customer WHERE id > 0", new ResultSetIterator() { public void forEachRow(ResultSet rs) throws SQLException { System.out.println(rs.getString("name")); }}); |
int |
singleIntQuery(java.lang.String sqlStmt)
This method is a convenience method for executing a SQL query which has a single row with a single column containing a number as a result. |
int |
singleIntQuery(java.lang.String prepSqlStmt,
FillingCommand cmd)
This method is a convenience method for executing a SQL query which has a single row with a single column containing a number as a result. |
int |
update(java.lang.String sqlStr)
Use this method to execute modifying SQL-statements such as insert into or update. Example: sql.update("INSERT INTO customer (id, name) VALUES (1, 'John Smith')"); |
int |
update(java.lang.String prepSql,
FillingCommand cmd)
Use this method to execute modifying SQL-statements such as insert into or update, with a PreparedStatement. |
| Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Constructor Detail |
public SQLExecuter(ConnectionProvider conprovider)
| Method Detail |
public void executeTX(TXCodeBlock txCodeBlock)
throws java.sql.SQLException
sqlexecuter.executeTX(new TXCodeBlock() {
public void doTransaction (SQL sql) throws SQLException {
sql.update ("INSERT INTO customer (id, name) VALUES (1, 'Arno Haase')");
sql.update ("INSERT INTO customer (id, name) VALUES (2, 'Jan Hermanns')");
}});
Note that the SQL instance passed to doTransaction() can
also be handed to methods outside the TXCodeBlock. This is
extremly usefull to factor out code.
private void insertArno(SQL sql) throws SQLException {
sql.update ("INSERT INTO customer (id, name) VALUES (1, 'Arno Haase')");
}
private void insertJan(SQL sql) throws SQLException {
sql.update ("INSERT INTO customer (id, name) VALUES (2, 'Jan Hermanns')");
}
sqlexecuter.executeTX(new TXCodeBlock() {
public void doTransaction (SQL sql) throws SQLException {
insertArno(sql);
insertJan(sql);
}});
txCodeBlock - contains a bunch of statements, to be
executed in a single transaction.
public int update(java.lang.String sqlStr)
throws java.sql.SQLException
SQL
sql.update("INSERT INTO customer (id, name) VALUES (1, 'John Smith')");
update in interface SQLsafejdbc.SQLsqlStr - the statement to be executed
public int update(java.lang.String prepSql,
FillingCommand cmd)
throws java.sql.SQLException
SQL
final int id = 1;
final String name = "John Smith";
sql.update("INSERT INTO customer (id, name) VALUES (?, ?)",
new FillingCommand() {
public void fill(PreparedStatement s) throws SQLException {
s.setInt(1, id);
s.setString(2, name);
}});
update in interface SQLsafejdbc.SQLsqlStr - the prepared statement to be executed
public void query(java.lang.String sqlStr,
ResultSetProcessor rsProcessor)
throws java.sql.SQLException
SQL
sql.query("SELECT id, name FROM customer WHERE id > 0",
new ResultSetIterator() {
public void forEachRow(ResultSet rs) throws SQLException {
System.out.println(rs.getString("name"));
}});
query in interface SQLsafejdbc.SQLsqlStr - contains the SQL queryrsProcessor - is used to process the ResultSet resulting
from the query. The ResultSet of this SQL-Query will be
handed to the ResultSetProcessor; if an iteration over all
rows of the result set is desired, use a ResultSetIterator
(like in the above example).
public void query(java.lang.String prepSql,
FillingCommand cmd,
ResultSetProcessor rsProcessor)
throws java.sql.SQLException
SQL
final int id_threshold = 3;
sql.query("SELECT id, name FROM customer WHERE id > ?",
new FillingCommand() {
public void fill(PreparedStatement s) throws SQLException {
s.setInt(1, id_threshold);
}},
new ResultSetIterator() {
public void forEachRow(ResultSet rs) throws SQLException {
System.out.println(rs.getString("name"));
}});
query in interface SQLsafejdbc.SQLprepSql - contains the SQL query in the "PreparedStatement" formcmd - is called to set the IN parameters of the prepared statementrsProcessor - is used to process the ResultSet resulting from the query.
The ResultSet of this SQL-Query will be handed to the ResultSetProcessor; if
an iteration over all rows of the result set is desired, use a ResultSetIterator.
public int singleIntQuery(java.lang.String sqlStmt)
throws java.sql.SQLException
singleIntQuery in interface SQL
public int singleIntQuery(java.lang.String prepSqlStmt,
FillingCommand cmd)
throws java.sql.SQLException
singleIntQuery in interface SQL
|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||