Как проверить, существует ли имя столбца при использовании Spring jdbcTemplate? - PullRequest
0 голосов
/ 04 июля 2018

Я использую jdbcTemplate для записи данных в мою базу данных Oracle. Я хотел бы повторно использовать мой код для той же таблицы, но в двух разных средах, и разница между этими двумя средами отсутствует только в одном столбце. Поэтому, прежде чем записывать данные, мне нужно проверить, существует ли столбец или нет, чтобы использовать правильный запрос 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);

Может ли кто-нибудь дать мне подсказку, как мне осуществить проверку столбца 3 здесь? Большое спасибо в продвинутом!

Ответы [ 2 ]

0 голосов
/ 04 июля 2018

Для того, чтобы получить, проверьте размер столбцов. поместите все свои столбцы в массив и проверьте, если 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);

0 голосов
/ 04 июля 2018

Oracle предлагает три различных представления для получения информации о столбцах таблицы: ALL_TAB_COLUMNS, USER_TAB_COLUMNS и DBA_TAB_COLUMNS.

Вы можете выполнить запрос, как показано ниже, с JDBC, чтобы проверить, существует ли столбец перед выполнением запроса вставки.

select column_name from ALL_TAB_COLUMNS where TABLE_NAME = 'MYTABLE';
...