关于Java(JDBC连接数据库)

Processing SQL Statements with JDBC

处理JDBC中的SQL语句

这节主要是 JDBC 与数据库交互的基本步骤

JDBC的基石是DriverManager,通过它,Java程序可以与数据库交互

创建 Connection

一个Connection,连接着数据源和Java程序,表示一个数据连接

数据源可以是 DBMS,常规文件系统,或者是其他JDBC驱动支持的数据源

生成 Statement

Statement是一个接口,代表SQL语句

JDBC中,有3类语句:

  • Statement
    简单实现SQL语句,无参
    一般调用 Connection 的 createStatement 实例方法来获得

  • PreparedStatement
    继承Statement
    预编译SQL语句,可能有输入参数

  • CallableStatement
    继承PreparedStatement
    执行存储过程,可能存在输入或输出参数

执行 Statement

执行Statement,可以调用以下3种方法:

  • execute
    当执行返回的第一个对象是ResultSet,则该方法返回true
    该方法可以返回多个ResultSet对象
    重复使用 Statement.getResultSet ,来获取这些ResultSet

  • executeQuery
    返回一个ResultSet

  • executeUpdate
    返回SQL语句影响的数据记录的行数
    当使用SQL语句进行增删改时,使用该方法

处理 ResultSet

使用游标来遍历ResultSet,从而获取数据
此处游标,并非数据库的游标
开始时,游标在结果集第一行之前

关闭 Connection

当语句执行完,则顺序调用 ResultSet,Statement和Connection 各自的 close 方法,来释放资源一般,这些语句置于 finally 语句块中
如此,即使程序有异常,也不会影响资源的释放

在 JDBC 7及更新的版本中,可以使用 try-with-resource 来自动关闭 ResultSet,Statement和Connection

基本格式如下:

try (Statement stmt = con.createStatement()) {
    // ...
}

代码实例:

public static void viewTable(Connection con) throws SQLException {

    String query = "select COF_NAME, SUP_ID, PRICE, " +
                   "SALES, TOTAL " +
                   "from COFFEES";

    try (Statement stmt = con.createStatement()) {

        ResultSet rs = stmt.executeQuery(query);

        while (rs.next()) {
            String coffeeName = rs.getString("COF_NAME");
            int supplierID = rs.getInt("SUP_ID");
            float price = rs.getFloat("PRICE");
            int sales = rs.getInt("SALES");
            int total = rs.getInt("TOTAL");
            System.out.println(coffeeName + ", " + supplierID +
                               ", " + price + ", " + sales +
                               ", " + total);
        }
    } catch (SQLException e) {
        JDBCTutorialUtilities.printSQLException(e);
    }
}
posted @ 2015-11-21 22:38  coolsoul  阅读(366)  评论(0编辑  收藏  举报