Java 从实用程序类返回/使用PreparedStatement

Java 从实用程序类返回/使用PreparedStatement,java,prepared-statement,Java,Prepared Statement,我有一段代码,它使用JDBC“语句”执行CRUD操作。现在,我需要用“PreparedStatement”替换所有语句,但我不知道如何像下面的代码那样返回/使用它。请帮忙 MyDao.java public class MyDao extends BaseDao{ public MyDao() { super(); } public void search(){ ResultSet rs = null; try

我有一段代码,它使用JDBC“语句”执行CRUD操作。现在,我需要用“PreparedStatement”替换所有语句,但我不知道如何像下面的代码那样返回/使用它。请帮忙

MyDao.java

    public class MyDao extends BaseDao{

    public MyDao() {
        super();
    }

    public void search(){
        ResultSet rs = null;

        try {
            statement.executeQuery("SELECT * FROM testTable");
            rs = statement.getResultSet();
            reset();
        } 
        catch (Exception e) {
         e.printStackTrace();
        }
    }

}
BaseDao

  public class BaseDao {

Connection connection=null;
Statement statement = null;

public BaseDao() {
        try {
            Class.forName("org.postgresql.Driver");
            connection = (Connection) DriverManager.getConnection("url","user","password");
            statement = connection.createStatement();
        }
        catch (Exception e){
            e.printStackTrace();
        }
    }


    public void reset(){
        try{
            statement.close();
            connection.close();
        }catch(Exception e){
            e.printStackTrace();
        }
    }
}

首先检查数据库的连接参数,我假设您使用的是本地数据库,所以使用localhost、user和password对其进行测试。如果连接正常,打印控制台消息,然后执行CRUD

如上所述,你不能。您必须提供要准备的SQL。但整个设计是错误的。您不应该作为类的实例成员携带连接和语句。数据库服务器可以随时关闭连接,尤其是长期存在的连接,此时您仍然需要一个新的连接。不要给它机会。您应该根据需要获得这两项服务,并使用连接池来摊销成本

正如您所说的,您不应该作为类的实例成员携带连接和语句,我觉得如果您可以包括原因,那么它将对未来的用户有所帮助。请分享你的想法thoughts@EJP:同意!但这是多年前编写的遗留代码,客户不希望在其中进行巨大的代码更改。正如我所说的,我很困惑,发布了这个问题来确认我的理解。谢谢:-)那么你不应该改变它。无论如何,你当然不能按要求更改它。如果没有要准备的SQL,则无法创建PreparedStatement。不会以任何方式回答问题。我的查询是关于PreparedStatement的。我们可以像上面代码中使用语句那样使用PreparedStatement吗?