Как читать таблицу из VIEWS в SQL-запросах - PullRequest
0 голосов
/ 28 сентября 2019

Я хочу прочитать три столбца, а именно "name, xcoordinate, ycoordinate" этой таблицы SCHACHT_V из представлений в базе данных, как показано на следующем рисунке
таблица из представлений в базе данных :

Код, который я использовал, выглядит следующим образом

/**
 *
 * @author liu
 */
public class SelectApp {

    /**
     * @param args the command line arguments
     *
     */

        private Connection connect() throws ClassNotFoundException, SQLException {
            // SQLite connection string
            Class.forName("org.sqlite.JDBC");
            File file = new File("F:\\LHU\\ISU\\Masterarbeit\\Daten Ricklingen\\Model-Extr_BLD3V1,2_EXT.idbr");
            SQLiteConfig config = new SQLiteConfig();
            config.setEncoding(SQLiteConfig.Encoding.UTF8);
            Connection conn = DriverManager.getConnection("jdbc:sqlite:" + file.getAbsolutePath(), config.toProperties());

            return conn;
        }

        /**
         * select all rows in the warehouses table
         */
        public void selectAll() {

            String sql = "SELECT name, xcoordinate, ycoordinate FROM SCHACHT_V";

        try (Connection conn = this.connect();
             Statement stmt  = conn.createStatement();
             ResultSet rs   = stmt.executeQuery(sql)){

                // loop through the result set

                while(rs.next()) {

                        System.out.println(rs.getString("name") + "\t" + rs.getDouble("xcoordinate") + "\t" + rs.getDouble("ycoordinate") + "\t");

                }
            }catch (SQLException e) {
                System.out.println(e.getMessage());

            } catch (ClassNotFoundException ex) {
                Logger.getLogger(SelectApp.class.getName()).log(Level.SEVERE, null, ex);
            }

        }



        /**
         * @param args the command line arguments
         */

        public static void main(String[] args) {

            SelectApp app = new SelectApp();
            app.selectAll();

        }

}

Но он всегда показывает ошибку:

"[SQLITE_ERROR] Ошибка SQL или отсутствует база данных (такой функции нет: X)".

Я застрял в этом на долгое время.Кто-нибудь может мне помочь?

1 Ответ

0 голосов
/ 28 сентября 2019

Я попробовал твой код, и он отлично работает для меня.На скриншоте, которым вы поделились, я вижу, что имена столбцов, которые вы передали в java-коде, неверны.

Пожалуйста, попробуйте XKOORDINATE (как показано на снимке экрана) вместо xcoordinate и YKOORDINATE (как показано на снимке экрана) вместо ycoordinate.

Код с неправильным именем столбца

String sql = "SELECT name, xcoordinate, ycoordinate FROM SCHACHT_V"; //1

while(rs.next()) { //2

     System.out.println(rs.getString("name") + "\t" + rs.getDouble("xcoordinate") + "\t" + rs.getDouble("ycoordinate") + "\t");

     }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...