ITPub博客

首页 > 数据库 > > 数据库开发指南(5)

数据库开发指南(5)

作者:GaussDB_数据库 时间:2020-04-26 10:01:03 0 删除 编辑

执行SQL语句

应用程序通过执行SQL语句来操作数据库的数据,本节将介绍如何执行SQL语句。

执行普通SQL语句

执行普通SQL语句(不用传递参数的语句),需要按以下步骤执行:

  1. 调用Connection的createStatement方法创建语句对象。

    Statement stmt = con.createStatement();
  2. 调用Statement的executeUpdate方法执行SQL语句。

    int rc = stmt.executeUpdate("CREATE TABLE tab1(id INTEGER, name VARCHAR(32))");
  3. 关闭语句对象。

    stmt.close();

执行预编译SQL语句

预编译语句是只编译和优化一次,然后可以通过设置不同的参数值多次使用。由于已经预先编译好,后续使用会减少执行时间。因此,如果多次执行一条语句,请选择使用预编译语句。可以按以下步骤执行:

  1. 调用Connection的prepareStatement方法创建预编译语句对象。

    PreparedStatement pstmt = con.prepareStatement("UPDATE tab1 SET col1 = ? WHERE key = 1");
  2. 调用PreparedStatement的setShort设置参数。

    pstmt.setShort(1, (short)2);
  3. 调用PreparedStatement的executeUpdate方法执行预编译SQL语句。

    int rowcount = pstmt.executeUpdate();
  4. 调用PreparedStatement的close方法关闭预编译语句对象。

    pstmt.close();

执行批处理

用一条预处理语句处理多条相似的数据,数据库只创建一次查询计划,节省了语句的编译和优化时间。可以按如下步骤执行:

  1. 调用Connection的prepareStatement方法创建预编译语句对象。

    PreparedStatement pstmt = con.prepareStatement("INSERT INTO tab1 VALUES (?)");
  2. 针对每条数据都要调用setShort设置参数,以及调用addBatch确认该条设置完毕。

    pstmt.setShort(1, (short)2);
    pstmt.addBatch();
  3. 调用PreparedStatement的executeBatch方法执行批处理。

    int[] rowcount = pstmt.executeBatch();

    调用PreparedStatement的close方法关闭预编译语句对象。

    pstmt.close();

调用存储过程

  1. 调用Connection的prepareCall方法创建预编译存储过程语句对象。

    CallableStatement callStmt = conn.prepareCall("call p_test(?,?)");
  2. 调用CallableStatement相关的setXXX方法设置入参值,使用registerOutParameter方法设置出参类型。

    callStmt.setInt(1, 999);
    callStmt.registerOutParameter(2, java.sql.Types.REF_CURSOR); //类型使用java.sql.Types类中定义的标准类型
  3. 调用CallableStatement的execute方法执行预编译存储过程语句。

    callStmt.execute();
  4. 调用CallableStatement的getXXX方法获取存储过程的出参。

    --通过出参下标来获取值。
    ResultSet rs = (ResultSet)callStmt.getObject(2);
    --通过出参名字来获取值。
    ResultSet rs = (ResultSet)callStmt.getObject("out_cursor"); //字符串"out_cursor"是存储过程p_test第二个参数的名字
  5. 调用CallableStatement的close方法关闭预编译存储过程语句对象。

  6. callStmt.close();


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69959250/viewspace-3122826/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: SQL语法-ALTER GROUP
请登录后发表评论 登录
全部评论

注册时间:2020-01-06

  • 博文量
    2907
  • 访问量
    19188