关于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 ,来获取这些ResultSetexecuteQuery
返回一个ResultSetexecuteUpdate
返回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);
}
}