safejdbc
Interface SQL

All Known Implementing Classes:
SQLExecuter

public interface SQL

This is the central abstraction of the JDBC library, it provides methods to execute SQL statements. It is implemented by SQLExecuter to provide non-transactional access to the database. Transactional access to the database is provided through a callback mechanism inside the executeTX method of SQLExecuter which passes another implementation of this interface to the TXCodeBlock.
For details see the TXCodeBlock.


Method Summary
 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.
 

Method Detail

singleIntQuery

public int singleIntQuery(java.lang.String sqlStmt)
                   throws java.sql.SQLException
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. This method is useful for queries such as "SELECT COUNT(*) FROM ... WHERE ...".
Example:
 int nr_customers = sql.singleIntQuery("SELECT COUNT(*) FROM customer");
 
Parameters:
sqlStr - contains the SQL query
Returns:
the number in the result set (i.e. the number of matches)

singleIntQuery

public int singleIntQuery(java.lang.String prepSqlStmt,
                          FillingCommand cmd)
                   throws java.sql.SQLException
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. This method is useful for queries such as "SELECT COUNT(*) FROM ... WHERE ...".
Example:
 final int id_threshold = 1;
       
 int some_customers =
     sql.singleIntQuery("SELECT COUNT(*) FROM customer WHERE id > ?",
                        new FillingCommand() {
                            public void fill(PreparedStatement s) throws SQLException {
                                s.setInt(1, id_threshold);
                            }});
 
Parameters:
sqlStr - contains the SQL query
cmd - is called to set the IN parameters of the prepared statement
Returns:
the number in the result set (i.e. the number of matches)

query

public void query(java.lang.String sqlStr,
                  ResultSetProcessor rsProcessor)
           throws java.sql.SQLException
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"));
               }});
 
Parameters:
sqlStr - contains the SQL query
rsProcessor - 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).

update

public int update(java.lang.String sqlStr)
           throws java.sql.SQLException
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')");
 
Parameters:
sqlStr - the statement to be executed
Returns:
the number of altered rows.

update

public int update(java.lang.String prepSql,
                  FillingCommand cmd)
           throws java.sql.SQLException
Use this method to execute modifying SQL-statements such as insert into or update, with a PreparedStatement. The statement is executed in a separate transaction, the change is committed immediately.
Example:
 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);
                }});
 
Parameters:
sqlStr - the prepared statement to be executed
Returns:
the number of altered rows.

query

public void query(java.lang.String prepSql,
                  FillingCommand cmd,
                  ResultSetProcessor rsProcessor)
           throws java.sql.SQLException
Use this method to execute SQL-Query-Statements such as select from.
Example:
 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"));
               }});
 
Parameters:
prepSql - contains the SQL query in the "PreparedStatement" form
cmd - is called to set the IN parameters of the prepared statement
rsProcessor - 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.


Copyright (c) 2001, 2002 by Jan Hermanns and Arno Haase. All Rights Reserved.