Как добавить новую запись к таблице, извлеченной из базы данных java?

332
18 февраля 2017, 05:32

Возможно ли добавить новую запись(нового пользователя) в таблицу, которую извлекли из базы данных? При нажатии кнопки должны открываться поля для ввода данных и кнопка для их сохранения! Использую jsf, данные выводятся в xhtml страницу. Подскажите, пожалуйста! Все ли понятно я поясняю!?

Методы для добавления и сохранения новых данных: (myList- новый ArrayList; Values - класс, содержащий setters & getters. C новым списком все открывается и добавляется, но как объединить myList c getAllUsers(),если я правильно объясняю?

    public void addNewUser(){
        Values newValue = new Values();
        newValue.setEditable(true);
        myList.add(newValue);
        }
    public void saveNewUser(){
        System.out.println("We're in saveNewUser()");
        for(Values value: myList){
            addUser();
            value.setEditable(false);
        }
    }

Метод, который извлекает данные из базы данных:

public ArrayList<Values> getAllUsers(){
    ArrayList<Values> usersList= new ArrayList<>();
    SQL= "SELECT id,orderNo,productName,price,qty FROM Registration";
    System.out.println("Retreive values from Registration table...");
    databaseConnection();
    try {
        prepStatement= connection.prepareStatement(SQL);
        resultSet= prepStatement.executeQuery();
        boolean found= false;
        while (resultSet.next()== true) {
            Values allValues= new Values();
              allValues.setId(resultSet.getInt("id"));
              allValues.setOrderNo(resultSet.getString("orderNo"));
              allValues.setProductName(resultSet.getString("productName"));
              allValues.setPrice(resultSet.getBigDecimal("price"));
              allValues.setQty(resultSet.getInt("qty"));
              usersList.add(allValues);
              found= true;
        }
          resultSet.close();
          prepStatement.close();
          if (found) {
            return usersList;
        } else {
            return null;
        }
    } catch (Exception e) {
        // TODO: handle exception
        e.printStackTrace();
        System.out.println("Error in getAllUsers()-->"+e.getMessage());
    }finally {
        close(connection);
    }
    return (null);
}
    public List<Values> getInformation(){
    return getAllUsers();
}
Answer 1

Создайте еще один метод addUser, в котором вы будете обращаться к БД и записывать значение в таблицу БД

Answer 2

Если я правильно понял, то лучше передавать в метод getAllUsers() список myList, и уже его заполнять данными из выборки:

public ArrayList<Values> getAllUsers(ArrayList<Values> usersList) {
    usersList = new ArrayList<Values>();
    ...
    return usersList;
}

И где-то этот метод вызывать:

myList = getAllUsers(myList);

Только нужно учесть, что myList будет пересоздаваться заново старые данные пропадут, что в принципе логично -- ведь он заполниться записями из выборки.

READ ALSO
Управление пользователями Tomcat с помощью Spring Security

Управление пользователями Tomcat с помощью Spring Security

В tomcat-usersxml задаются пользователи с определенными правами

294
Java, эквивалент LINQ Select, Stream API

Java, эквивалент LINQ Select, Stream API

Имеется List объектов класса Person

300
Перенос проекта на dagger2

Перенос проекта на dagger2

Такой вопрос, в проекте я использую метод для проверки работы сервиса,я вынес его в отдельный класс с аннотацией @Module:

353
Java chat app video streaming

Java chat app video streaming

Всем привет! У меня есть мини Джава чат с клиентом и серверомДело в том что я хочу добавить туда видео стриминг(вебинар) и аудио а сам понятия...

273