2

我正在尝试创建一个UPDATE像这样的通用语句,其中只有表名是固定的。

updateValueQuery = conn.prepareStatement("UPDATE TABLENAME SET (?)=(?)");

失败并SQLException抱怨语法。一旦我像这样指定列名:

updateValueQuery = conn.prepareStatement("UPDATE TABLENAME SET COL_NAME=(?)");

SQL 愉快地编译。有没有办法让列名也匿名?

我正在使用 Apache 德比。

4

1 回答 1

2

不,PreparedStatement 只有值的持有者。我通过以下方式解决了类似的问题:

    private final String FIND_STRING = "select * from TABLENANE where {0} = ?";
       .
       .
       .
    private final Map<String, PreparedStatement> statements = new HashMap<String, PreparedStatement>();

    private PreparedStatement prepareStatement(String field, String toFind) throws SQLException{
       PreparedStatement statement = null;
       if (statements.contains(field)){
          statement = statements.get(field);
       }else{
          String findInHelpDefinition = MessageFormat.format(FIND_STRING, field));
          statement = connection.prepareStatement(findInHelpDefinition);
          statemnts.put(field, statement);
       }
       statement.setString(1, toFind);
       return statement;
    }
于 2013-07-16T13:59:30.567 回答