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

时间:2017-12-04 06:00:50

标签: java prepared-statement

我有一段使用JDBC" Statement"执行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();
        }
    }
}

2 个答案:

答案 0 :(得分:0)

如上所述,你不能。您必须提供要准备的SQL。但整个设计是不正确的。您不应将Connections和Statements作为类的实例成员。数据库服务器可以随时关闭连接,尤其是长期连接,此时您还需要一个新连接。别给它机会。您应该根据需要获得两者,并使用连接池来分摊成本。

答案 1 :(得分:-1)

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