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);
}
}

最新文章

  1. iOS开发:自定义控件实现手势解锁
  2. vector容器使用和assert断言关键字
  3. stdcall, cdecl, pascal 区别(转载)
  4. 一步一步hadoop安装
  5. Ubuntu安装出现左上角光标一直闪解决方式
  6. 1 TKinter小窗口及标题
  7. 二分查找里的upper bound与lower bound的实现与分析
  8. kafka环境
  9. [JVM-1]Java运行时数据区域
  10. Typora的使用
  11. locust 的使用
  12. linux 网络和流量监控
  13. 关于ThinkPhp中getField方法存在的问题
  14. 【CF913G】Power Substring 数论+原根
  15. 队列实例程序(C语言)
  16. python标准库介绍——3 stat 模块详解
  17. javascript 中解析json
  18. Kali-linux攻击路由器
  19. 20145231熊梓宏 《网络对抗》 实验8 Web基础
  20. Linux CentOS7.2下安装Redis && 配置Redis开机自启动

热门文章

  1. Poco库网络模块例子解析1-------字典查询
  2. C# 调用Java Webservice 加入SoapHeader 验证信息
  3. DotNet Core 之旅(一)
  4. 在SQL Server 实现递归
  5. android开发之应用Crash自动抓取Log_自动保存崩溃日志到本地
  6. Win7上安装oracle中可能遇到的错误
  7. AppDelegate 方法详解
  8. CSS3中的transform
  9. ZOJ 3471 Most Powerful(DP + 状态压缩)
  10. hdu 1286 找新朋友 (欧拉函数)