我正在使用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检查吗?非常感谢您!
答案 0 :(得分:1)
Oracle提供了三个不同的视图来获取表列信息:ALL_TAB_COLUMNS,USER_TAB_COLUMNS和DBA_TAB_COLUMNS。
您可以使用JDBC如下运行查询,以在运行插入查询之前确认列是否存在。
select column_name from ALL_TAB_COLUMNS where TABLE_NAME = 'MYTABLE';
答案 1 :(得分:0)
为了获得检查列的大小。将所有列都放入数组,然后检查是否 columnSize = 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);