Spec-Zone .ru
спецификации, руководства, описания, API
|
Statement
объекты позволяют Вам выполнять основные SQL-запросы и получать
результаты через ResultSet
class, который описывается позже.
Создать a Statement
экземпляр, Вы вызываете createStatement()
метод на Connection
объект Вы получили использование одного из DriverManager.getConnection()
или DataSource.getConnection()
методы, описанные ранее.
Как только у Вас есть a Statement
экземпляр, можно выполнить a SELECT
запрос, вызывая executeQuery(String)
метод с
SQL Вы хотите использовать.
Чтобы обновить данные в базе данных, используйте executeUpdate(String SQL)
метод.
Этот метод возвращает число строк, соответствующих оператором обновления, не числом строк, которые были
изменены.
Если Вы не знаете заранее, будет ли SQL-оператор a SELECT
или UPDATE
/INSERT
,
тогда можно использовать execute(String SQL)
метод. Этот метод возвратит true,
если SQL-запрос был a SELECT
, или ложь, если это было UPDATE
, INSERT
,
или DELETE
оператор. Если оператор был a SELECT
запрос, можно получить результаты, вызывая getResultSet()
метод. Если оператор был UPDATE
, INSERT
,
или DELETE
оператор, можно получить количество строк, на которое влияют, вызывая
getUpdateCount()
на Statement
экземпляр.
Пример 21.2. Connector/J: Используя java.sql. Оператор, чтобы выполнить aSELECT
запрос
import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;import java.sql.Statement;import java.sql.ResultSet;// assume that conn is an already created JDBC connection (see previous examples)Statement stmt = null;ResultSet rs = null;try { stmt = conn.createStatement(); rs = stmt.executeQuery("SELECT foo FROM bar"); // or alternatively, if you don't know ahead of time that // the query will be a SELECT... if (stmt.execute("SELECT foo FROM bar")) { rs = stmt.getResultSet(); } // Now do something with the ResultSet ....}catch (SQLException ex){ // handle any errors System.out.println("SQLException: " + ex.getMessage()); System.out.println("SQLState: " + ex.getSQLState()); System.out.println("VendorError: " + ex.getErrorCode());}finally { // it is a good idea to release // resources in a finally{} block // in reverse-order of their creation // if they are no-longer needed if (rs != null) { try { rs.close(); } catch (SQLException sqlEx) { } // ignore rs = null; } if (stmt != null) { try { stmt.close(); } catch (SQLException sqlEx) { } // ignore stmt = null; }}