JavaFX удалить данные в tableview и sqlite - PullRequest
0 голосов
/ 27 октября 2019

Я хотел бы удалить строку в табличном представлении, а также в базовой базе данных SQLite, которая заполняет табличное представление

Здесь я получаю selectedRow

 public void deleteDBRow() {
    if (tableV.getSelectionModel().getSelectedItem() != null) {
        Bew selBew = tableV.getSelectionModel().getSelectedItem();
        System.out.println(selBew.getName());

        }
     }

и могу удалить ее со случайным кодом

DELETE FROM Table WHERE name = ""+selBew.getName()");

Но я хотел бы также удалить запись в базе данных sqlite

Время от времени у меня появляются строки с одним и тем же текстом в каждом столбце - так что этот способ был критическим - можетЯ использую rowID, чтобы удалить выбранную строку в sqlite?

Здесь одна из моих попыток получить rowid в табличном представлении

ObservableList bewList = FXCollections.observableArrayList ();

    try {
        String sql = "SELECT rowID, Name, Date, Action, Info FROM tab1";
        Connection conn = DriverManager.getConnection("jdbc:sqlite:TestB1.db");
        Statement stmt = conn.createStatement();
        ResultSet rs = stmt.executeQuery(sql);
        while (rs.next()) {

            bewList.add(new Bew(rs.getInt("rowID"), rs.getString("name"), rs.getString("date"),
                    rs.getString("action"), rs.getString("Info")));

          System.out.println("rs.next : " + rs.getInt("rowID") +" - " + rs.getString("date") +"  " +
                    rs.getString("action") +"  " + rs.getString("Info"));
        }

    }catch (Exception e) {
        System.out.println("SQLiteDB.getData ---> Error RS");
        System.err.println("*E"+e.getClass().getName() + ": " + e.getMessage());
    }


    return bewList;


String sql = "CREATE TABLE IF NOT EXISTS tab1" +
                    "(rowID INT PRIMARY KEY," +
                    "NAME CHAR(50) NOT NULL ,"+
                   "DATE CHAR(15) ,"+
                    "ACTION CHAR(50) ,"+
                    "INFO CHAR(3));";

           conn.createStatement().executeUpdate(sql);

rowID ist всегда 0 - не знаю почему???

edit:

Controller

ObservableList bewList = DB.getData ();tableV.setItems (bewList);

Редактировать:

Может быть, ошибка здесь - добавить данные

я добавить 4 значения - rowid отсутствует ??

public void add(String Name, String Date, String Action, String Info) {

    try {
        Connection conn = DriverManager.getConnection("jdbc:sqlite:TestB2.db");
        stmt = conn.createStatement();
        String ValStr = "\'"+Name+"\' ,\'"+Date+"\',\'"+Action+"\' ,\'"+Info+"\'";
        String sql = "INSERT INTO tab1 (rowID, NAME,DATE,ACTION, INFO) VALUES ("+ValStr+")";
      //  System.out.println("Button Click add"+conn.createStatement().toString());
        stmt.executeUpdate(sql); //geändert
      ObservableList<Bew> list = getData();
        conn.close();
        System.out.println("DB ROW add");
    } catch (SQLException e) {
        System.out.println(e.getMessage());
    }

}
...