jdbc 使用连接(和语句)

示例

一旦获得Connection,我们将主要使用它来创建Statement对象。Statements表示单个SQL事务;它们用于执行查询并检索结果(如果有)。让我们看一些例子:

public void useConnection() throws SQLException{


    Connection conn = getConnection();

    //我们可以使用Connection创建语句
    Statement state = conn.getStatement();

    //Statements are most useful for static, "one-off" queries
    
    String query = "SELECT * FROM mainTable";
    boolean sucess = state.execute(query);
    
    //execute方法正是这样做的。它执行提供的SQL语句,如果执行提供的结果(即SELECT),则返回true,否则返回false。

    ResultSet results = state.getResultSet();
    
    //ResultSet对象表示SQL语句的结果(如果有)。
    //在这种情况下,ResultSet包含查询语句的返回值。
    //下一个示例将更详细地检查ResultSet。

    ResultSet newResults = state.executeQuery(query)
    
    //executeQuery方法是一种“快捷方式”方法。它将execute和getResultSet方法合并为一个步骤。
    //请注意,提供的SQL查询必须能够返回结果。通常,它是一个静态SELECT语句。
    //Statement接口提供了许多类似的“快捷方式”方法,包括executeUpdate和executeBatch

    //陈述虽然有用,但并不总是最佳选择。 
    
    String newQuery = "SELECT * FROM mainTable WHERE id=?";
    PreparedStatement prepStatement = conn.prepareStatement(newQuery);

    //PreparedStatement是变量语句的首选,尤其是将要多次执行的语句

    for(int id:this.ids){

        prepStatement.setInt(1,id);
        //PreparedStatements允许您使用多种设置方法设置绑定变量。
        //各种set方法中的任何一个的第一个参数是要设置的绑定变量的索引。请注意,它从1开始,而不是0。 

        ResultSet tempResults = prepStatement.executeQuery()
        //就像声明一样,PreparedStatement也有几个快捷方法。 
        //与声明不同,PreparedStatement不会将查询字符串作为其任何执行方法的参数。
        //执行的语句始终是传递给创建PreparedStatement的Connector.prepareStatement调用的语句。
    }

}