Java 在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

是否可以编辑以前在其他方法中使用的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.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=?”
)哦,对不起,我已经修复了它。