sql - JavaDB 匿名列名

标签 sql database prepared-statement derby javadb

我正在尝试创建一个像这样的通用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/

相关文章:

mysql - 将准备好的语句与 MYSQL http 插件一起使用

sql - 如何删除仅 ID 不同的两行

database - 并行运行不同版本的 postgresql

python - SQLAlchemy:合并重复标签的有效方法

php - Mysql查询语句索引调优

php - 如果存在混合类型数组,如何为 IN 子句准备语句?

MySQL 创建 View : duplicate rows which has different value in 4 columns and not empty

sql - 为什么包含空值的多列的 Sql Sum 返回错误结果?

mysql - 这是什么样的主键?

c - PostgreSQL:给定的带占位符的类型与 PQexecPrepared() paramValues 参数中的类型之间的关系