Эй, ребята, я делаю программу поиска инвентаря для друга и у меня возникают проблемы с 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)