Java 从实用程序类返回/使用PreparedStatement
我有一段代码,它使用JDBC“语句”执行CRUD操作。现在,我需要用“PreparedStatement”替换所有语句,但我不知道如何像下面的代码那样返回/使用它。请帮忙 MyDao.javaJava 从实用程序类返回/使用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
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吗?