需要有关JDBC查询的帮助。
我本人会尝试过,但是现在我无法访问数据库。

我的问题是:
由于CallableStatement扩展了PreparedStatement,这是否意味着我们可以使用CallableStatement执行为准备好的语句准备的任何查询?

更具体地说,像这样使用Callable的任何缺点:

CallableStatement stmt = null;
String sql = "UPDATE Employees set age=30 WHERE id=";
      stmt = conn.prepareCall(sql);
      int empID = 102;
      stmt.setInt(1, empID); );
      stmt.execute();
stmt.close();
conn.close();

最佳答案

是的你可以。文档中描述的prepareCallprepareStatement方法的区别。如您所见,它们只是针对不同任务进行了优化。

package com.company;

import java.sql.*;

public class Main {

    public static void main(String[] args) throws ClassNotFoundException, SQLException {
        Class.forName("com.mysql.jdbc.Driver");

        Connection connection = DriverManager.getConnection("jdbc:mysql://localhost/mysql", "user", "password");

        CallableStatement callableStatement = connection.prepareCall("SELECT * FROM db WHERE user = ?");
        callableStatement.setString(1, "deployer");
        ResultSet resultSet = callableStatement.executeQuery();

        while(resultSet.next()) {
            System.out.println(resultSet.getString("Db"));
        }

        connection.close();
    }
}

关于java - 可以使用CallableStatement代替PreparedStatement吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28915264/

10-10 02:29