sqlite SQL有条件地选择可选列

evrscar2  于 2023-06-23  发布在  SQLite
关注(0)|答案(1)|浏览(114)

我得到了一个SQLite数据库,它包含a,b,c或a,b,c,d列,基于我不知道的版本。
有没有一种优雅的方法,如果d存在,就选择它,如果它不存在,就不会崩溃?我可以在执行查询时捕获发生的异常,并尝试不使用d的select,但这对我来说似乎是一种不安全的方式。

xggvc2p6

xggvc2p61#

使用PRAGMA函数与SQLite - PRAGMA schema.table_info(table-name);

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);

相关问题