Подключение программы к базе данных SQLite - PullRequest
0 голосов
/ 14 июня 2019

Эй, ребята, я делаю программу поиска инвентаря для друга и у меня возникают проблемы с SQLite, так как я новичок в этом, и я впервые делаю что-то с базой данных. У меня нет никого, кто мог бы действительно показать свой код, и я просто собирал его вместе, следуя инструкциям по пробиркам, а что нет. Если бы вы, ребята, могли это проверить и указать на любые очевидные ошибки, которые я могу сделать, это было бы здорово. Я включил код, который я получил из учебника, и первый метод, который я пытаюсь ввести в базу данных с помощью addVehicles.

    private static Connection con;
    private static boolean hasData = false;

    public ResultSet displayVehicles() throws ClassNotFoundException, SQLException {
        if(con == null) {
            getConnection();
        }

        Statement state = con.createStatement();
        ResultSet res = state.executeQuery("SELECT sim, wo, description, oilN, oilB, "
                + "airN, airB, hydN, hydB, fuelN, fuelB, misc FROM vehicles");
        return res;
    }

    private void getConnection() throws ClassNotFoundException, SQLException {
        // TODO Auto-generated method stub
        Class.forName("org.sqlite.JDBC");
        con = DriverManager.getConnection("jdbc:sqlite:SQLiteVehicles.db");
        initialise();


    }

    private void initialise() throws SQLException {
        // TODO Auto-generated method stub
        if(!hasData) {
            hasData = true;

            Statement state = con.createStatement();
            ResultSet res = state.executeQuery("SELECT name from sqlite_master WHERE"
                    + " type=' table' AND name=' vehicles'");
            if(!res.next()) {
                System.out.println("Building the Vehicle table with prepopulated values.");
                //build table
                Statement state2 = con.createStatement();
                state2.execute("CREATE TABLE vehicles(sim varchar(100)," + "wo varchar(100)," + "description varchar(500)," +
                        "oilN varchar(100)," + "oilB varchar(100)," + "airN varchar(100)," + "airB varchar(100)," +
                        "hydN varchar(100)," + "hydB varchar(100)," + "fuelN varchar(100)," + "fuelB varchar(100),"
                        + "misc varchar(1000),");

                //insert sample data
                PreparedStatement prep = con.prepareStatement("INSERT INTO vehicles "
                        + "values(?,?,?,?,?,?,?,?,?,?,?,?);");
                prep.setString(1, "101");
                prep.setString(2, "00000");
                prep.setString(3, "VEHICLE NOT FOUND");
                prep.setString(4, "N/A");
                prep.setString(5, "N/A");
                prep.setString(6, "N/A");
                prep.setString(7, "N/A"); 
                prep.setString(8, "N/A");
                prep.setString(9, "N/A");
                prep.setString(10, "N/A");
                prep.setString(11, "N/A");
                prep.setString(12, "TEST WORKED");
                prep.execute();


            }

        }
    }

    public void addVehicle(String sim, String wo, String description,
            String oilN, String oilB, String airN, String airB, String hydN,
            String hydB, String fuelN, String fuelB, String misc) 
                    throws ClassNotFoundException, SQLException {
        if(con == null) {
            getConnection();
        }
        PreparedStatement prep = con.prepareStatement("INSERT INTO vehicles "
                + "values(?,?,?,?,?,?,?,?,?,?,?,?);");
        prep.setString(1, sim);
        prep.setString(2, wo);
        prep.setString(3, description);
        prep.setString(4, oilN);
        prep.setString(5, oilB);
        prep.setString(6, airN);
        prep.setString(7, airB); 
        prep.setString(8, hydN);
        prep.setString(9, hydB);
        prep.setString(10, fuelN);
        prep.setString(11, fuelB);
        prep.setString(12, misc);
        prep.execute();
    }

Я получаю массу сообщений об ошибках, таких как

Exception in thread "``JavaFX Application Thread" java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
at javafx.fxml.FXMLLoader$MethodHandler.invoke(FXMLLoader.java:1774)
at javafx.fxml.FXMLLoader$ControllerMethodEventHandler.handle(FXMLLoader.java:1657)
at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:86)
at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238)

Только что появились новые ошибки

java.sql.SQLException: [SQLITE_ERROR] Ошибка SQL или отсутствующая база данных (рядом с ",": синтаксическая ошибка) в org.sqlite.core.DB.newSQLException (DB.java:890) в org.sqlite.core. DB.newSQLException (DB.java:901) в org.sqlite.core.DB.throwex (DB.java:868) в org.sqlite.core.NativeDB.prepare (собственный метод) в org.sqlite.core.DB. подготовить (DB.java:211) в org.sqlite.jdbc3.JDBC3Statement.execute (JDBC3Statement.java:60) в application.SQLite.initialise (SQLite.java:47) в application.SQLite.getConnection (SQLite.java:30 ) в application.SQLite.displayVehicles (SQLite.java:17)

1 Ответ

0 голосов
/ 14 июня 2019

Примите ваше заявление, удалите все элементы кода и посмотрите на него. Идите так далеко, что даже загляните в консоль базы данных (или другое приложение БД) и попытайтесь выполнить инструкцию.

автомобили CREATE TABLE (sim varchar (100), wo varchar (100), описание варчар (500), маслоN варчар (100), маслоВ варчар (100), эфирN Варчар (100), airB Варчар (100), HydN Варчар (100), HydB varchar (100), fuelN varchar (100), fuelB varchar (100), misc varchar (1000),

Сразу же я обращаюсь к последнему утверждению, у которого есть трейлинг ,, но есть еще кое-что, что не так. Если убрать весь «дополнительный пух» и присмотреться ...

автомобили CREATE TABLE (..., misc varchar (1000),

Вы заметите, что вам не хватает закрывающей скобки, ), которая должна быть в конце утверждения

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