java开发之mysql的PreparedStatement

今天开发时,使用PreparedStatement执行delete时,发现调用update方法不能正确执行,所以总结如下:

        实例代码:http://download.csdn.net/detail/writerpan/7286393

    可使用 PreparedStatement 的 execute 方法来执行 SQL 数据修改。PreparedStatement 使用用户定义的 SQL 语句查询数据库。将 SQL 语句应用于 PreparedStatement 时,使用 ? 字符来表示查询参数。对于任何 INSERT、UPDATE 或 DELETE 语句,每个 ? 参数都根据其在语句中的顺序位置来进行引用。例如,第一个 ? 引用为参数 1,第二个引用为参数 2。

  1.  向表中插入行

  1. 将新 SQL 语句准备为一个字符串。

    String sql_string = 
        "INSERT INTO Department(dept_no, name) VALUES( ?, ? )";
  2. 将该字符串传递给 PreparedStatement。

    PreparedStatement inserter = 
        conn.prepareStatement(sql_string);
  3. 使用 set 方法将输入值传递给 PreparedStatement。

    本示例将 dept_no 设置为 101,并引用为参数 1,将 name 设置为 "Electronics",并引用为参数 2。

    inserter.set(1, 101);
    inserter.set(2, "Electronics");
  4. 执行该语句。

    inserter.execute();
  5. 关闭 PreparedStatement 以释放资源。

    inserter.close();
  6. 提交对数据库的所有更改。

    conn.commit();

步骤 3 和 4 可以根据需要重复执行多次。

或者,当只需要插入单个条目时,您可以按照以下示例中的说明,对 INSERT 语句执行准备、执行和关闭操作:

INSERT INTO Department(dept_no, name) VALUES(2, 'Electronics');

此语句也可以通过 Java 字符串连接进行创建。

 ♦ 更新表中的行

  1. 将新 SQL 语句准备为一个字符串。

    String sql_string = 
        "UPDATE Department SET dept_no = ? WHERE dept_no = ?";
  2. 将该字符串传递给 PreparedStatement。

    PreparedStatement updater = 
        conn.prepareStatement(sql_string);
  3. 使用 set 方法将输入值传递给 PreparedStatement。

    updater.set(1, 102);
    updater.set(2, 101);

    上述示例与执行以下 SQL 语句等效:

    UPDATE Department SET dept_no = 102 WHERE dept_no = 101;
  4. 执行语句。

    updater.execute();
  5. 关闭 PreparedStatement 以释放资源。

    updater.close();
  6. 提交对数据库的所有更改。

    conn.commit();

步骤 3 和 4 可以根据需要重复执行多次。

或者,当您只更新单个条目时,可对以下语句执行准备、执行和关闭操作:

UPDATE Department SET dept_no = 102 WHERE dept_no = 101;

此语句也可以通过 Java 字符串连接进行创建。

 ♦ 删除表中的行

  1. 将新 SQL 语句准备为一个字符串。

    String sql_string = 
        "DELETE FROM Department WHERE dept_no = ?";
  2. 将该字符串传递给 PreparedStatement。

    PreparedStatement deleter = 
        conn.prepareStatement(sql_string);
  3. 使用 set 方法将输入值传递给 PreparedStatement。

    deleter.set(1, 102);

    上述示例与执行以下 SQL 语句等效:

    DELETE FROM Department WHERE dept_no = 102;
  4. 执行语句。

    deleter.execute();
  5. 关闭 PreparedStatement 以释放资源。

    deleter.close();
  6. 提交对数据库的所有更改。

    conn.commit();
  7. 步骤 3 和 4 可以根据需要重复执行多次。

    或者,当您只删除单个条目时,可按照上一节中的说明,对以下语句执行准备、执行和关闭操作:

    DELETE FROM Department WHERE dept_no = 102;

    此语句也可以通过 Java 字符串连接进行创建。

 示例

预准备语句可以执行多次。以下示例演示如何使用主机变量插入多行:



String stmt = "INSERT INTO Department(dept_no, name) VALUES (?,?)";
PreparedStatement inserter = conn.prepareStatement(stmt);

inserter.set(1, 101);
inserter.set(2, "Electronics");
inserter.execute();

inserter.set(1, 105);
inserter.set(2, "Sales");
inserter.execute();

inserter.set(1, 109);
inserter.set(2, "Accounting");
inserter.execute();

inserter.close();

在编写只需要执行一次的 SQL 语句时,建议对主机变量进行连接。以下示例演示了通过连接来执行 SQL 语句的插入行的方法:

void addRow(int id, String name, Connection conn) throws ULjException {
    PreparedStatement ps = conn.prepareStatement(
        "INSERT INTO Department(id, name) VALUES("
        + id
        + ", '"
        + name
        + "')";
    try {
        ps.execute();
    } 
    finally {
        ps.close(); \\ close the PreparedStatement even if an error occurs after execution.
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值