我有一段使用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();
}
}
}
答案 0 :(得分:0)
如上所述,你不能。您必须提供要准备的SQL。但整个设计是不正确的。您不应将Connections和Statements作为类的实例成员。数据库服务器可以随时关闭连接,尤其是长期连接,此时您还需要一个新连接。别给它机会。您应该根据需要获得两者,并使用连接池来分摊成本。
答案 1 :(得分:-1)
首先检查数据库的连接参数,我假设您使用的是本地数据库,因此请使用localhost,user,password进行测试。如果连接正常,则打印控制台消息,然后执行CRUD。