我得到了一个SQLite数据库,它包含a,b,c或a,b,c,d列,基于我不知道的版本。有没有一种优雅的方法,如果d存在,就选择它,如果它不存在,就不会崩溃?我可以在执行查询时捕获发生的异常,并尝试不使用d的select,但这对我来说似乎是一种不安全的方式。
xggvc2p61#
使用PRAGMA函数与SQLite - PRAGMA schema.table_info(table-name);
PRAGMA
String jdbc = "jdbc:sqlite:your_database.db"; String tableName = "data_table"; String columnName = "d"; try (Connection conn = DriverManager.getConnection(jdbcUrl); Statement statement = conn.createStatement()) { // Check that column exists ResultSet columns = statement.executeQuery("PRAGMA table_info(" + tableName + ")"); boolean columnExists = false; while (columns.next()) { if (columns.getString("name").equalsIgnoreCase(columnName)) { columnExists = true; break; } } String query; if (columnExists) { query = "SELECT a, b, c, d FROM " + tableName; } else { query = "SELECT a, b, c FROM " + tableName; } ResultSet result = statement.executeQuery(query);
1条答案
按热度按时间xggvc2p61#
使用
PRAGMA
函数与SQLite - PRAGMA schema.table_info(table-name);