【问题标题】:How to check if column name exists when using Spring jdbcTemplate?使用Spring jdbcTemplate时如何检查列名是否存在?
【发布时间】:2018-07-04 08:17:15
【问题描述】:

我正在使用 jdbcTemplate 将数据写入我的 Oracle DB。我想在同一个表中重用我的代码,但在两个不同的环境中,这两个环境之间的区别只是缺少一列。因此,在写入数据之前,我需要检查该列是否存在以使用正确的 sql 查询,否则我会得到一个异常。所以我想有类似的东西:

if(column3IsMissing){
    String sql = String.format("insert into %s %s", MYTABLE,
                "(column1, column2) values (?, ?)");
}else{
    String sql = String.format("insert into %s %s", MYTABLE,
                "(column1, column2, column3) values (?, ?, ?)");

}
jdbcTemplate.batchUpdate(sql, data, types);

谁能给我提示我应该如何在这里实施 column3IsMissing 检查?非常感谢您!

【问题讨论】:

    标签: java jdbctemplate


    【解决方案1】:

    Oracle 提供三种不同的视图来获取表列信息:ALL_TAB_COLUMNS、USER_TAB_COLUMNS 和 DBA_TAB_COLUMNS。

    您可以使用 JDBC 运行如下查询,以在运行插入查询之前确认列是否存在。

    select column_name from ALL_TAB_COLUMNS where TABLE_NAME = 'MYTABLE';
    

    【讨论】:

      【解决方案2】:

      为了检查列的大小。将所有列放入数组并检查是否 列大小 = 2。

      String[] columnList = {column1,column2,column3);

      if(columnList.size()==2){ String sql = String.format("insert into %s %s", MYTABLE, "(column1, column2) values (?, ?)"); }else{ String sql = String.format("insert into %s %s", MYTABLE, "(column1, column2, column3) values (?, ?, ?)");

      } jdbcTemplate.batchUpdate(sql, data, types);

      【讨论】:

        猜你喜欢
        • 2021-09-21
        • 1970-01-01
        • 2010-10-02
        • 2018-12-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多