我正在尝试创建一个像这样的通用UPDATE
语句,其中只有表名是固定的。
updateValueQuery = conn.prepareStatement("UPDATE TABLENAME SET (?)=(?)");
失败并出现 SQLException
提示语法。一旦我像这样指定列名称:
updateValueQuery = conn.prepareStatement("UPDATE TABLENAME SET COL_NAME=(?)");
SQL 顺利编译。有没有办法让列名也匿名?
我正在使用 Apache derby。
最佳答案
不,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;
}
关于sql - JavaDB 匿名列名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17678097/