Java 在preparedStatement中编辑查询
是否可以编辑以前在其他方法中使用的preparedStatement? 例如:Java 在preparedStatement中编辑查询,java,sql,database,jdbc,edit,Java,Sql,Database,Jdbc,Edit,是否可以编辑以前在其他方法中使用的preparedStatement? 例如: public class MyDB { private Connection c; private PreparedStatement p; public void foo() { // connecting to DB...try-catch-block... p = c.prepareStatement("SELECT * FROM t WHERE NAME=?"); p.setStri
public class MyDB {
private Connection c;
private PreparedStatement p;
public void foo() {
// connecting to DB...try-catch-block...
p = c.prepareStatement("SELECT * FROM t WHERE NAME=?");
p.setString(1, "Tom");
}
public void boo(){
// connecting to DB...try-catch-block...
//Here I want to concat the query with something
--> p = ....." AND City=?";
p.setString(2, "London");
ResultSet rs = p.executeQuery();
[...]
}
}
简短回答:不。长回答:不太正确,而且您似乎没有正确使用PreparedStatement
。你可以这样做-
private String query = "SELECT * FROM t WHERE NAME=?";
public void foo() {
// connecting to DB...try-catch-block...
ResultSet rs = null;
try (PreparedStatement ps = c.prepareStatement(query);) {
ps.setString(1, "Tom");
rs = ps.executeQuery();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
public void boo() {
// connecting to DB...try-catch-block...
// Here I want to concat the query with something
String sql = query + " AND City=?";
ResultSet rs = null;
try (PreparedStatement ps = c.prepareStatement(sql);) {
ps.setString(1, "Tom");
ps.setString(2, "London");
rs = ps.executeQuery();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
你能解释一下你想要完成什么吗?不,不太可能。您可以创建一系列的
静态final
字符串
,这些字符串构成基本查询并附加到它们。另外,PreparedStatement
的要点是不要将查询逻辑放入其中(即和City='London'
是错误的,它应该是“和City=?”
)哦,对不起,我已经修复了它。