2017-01-19 6 views
0

Мне нужно добавить новую запись в список, который извлекается из базы данных, - Это, кажется, будет simpse делать, но как соединить (объединить) этот 2 метод:Добавить новую запись в извлеченном из списка база данных SQL

public void addNewUser(){ 
    myList= new ArrayList<>(); 
    Values newValue = new Values(this.id, this.orderNo, this.productName, this.price, this.qty); 
    newValue.setEditable(true); 
    myList.add(newValue); 
} 

я получить список пользователей из базы данных SQL, используя такой метод:

private List<Values> valuesList; 
private Values allValues; 

private static List<Values> getUsers() { 
    try { 
     databaseConnection(); 
     String SQL = "SELECT * FROM Registration"; 
     System.out.println("Retrieve values from Registration table..."); 
     PreparedStatement prepStatement = connection.prepareStatement(SQL); 
     valuesList = new ArrayList<>(); 
     ResultSet resultSet = prepStatement.executeQuery(); 
     boolean found = false; 
     while (resultSet.next() == true) { 
      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")); 
      valuesList.add(allValues); 
      found = true; 
     } 
     resultSet.close(); 
     prepStatement.close(); 
     close(connection); 
     if (found) { 
      return valuesList; 
     } else { 
      return null; 
     } 
    } catch (Exception e) { 
     // TODO: handle exception 
     e.printStackTrace(); 
     System.out.println("Error in getUsers()-->" + e.getMessage()); 
    } 
    return (null); 
} 

public List<Values> getInformation() { 
    return getUsers(); 
} 

Вот моя страница дисплея:

<h:dataTable value="#{user.information}" var="x" border="1"> 
    <h:column> 
    <f:facet name="header"> 
     <h:outputText value="Id"></h:outputText> 
    </f:facet> 
    <h:outputText value="#{x.id}"></h:outputText> 
    </h:column> 
    <h:column> 
    <f:facet name="header"> 
     <h:outputText value="Order No"></h:outputText> 
    </f:facet> 
    <h:inputText value="#{x.orderNo}" rendered="#{x.editable}"></h:inputText> 
    <h:outputText value="#{x.orderNo}" rendered="#{not x.editable}"></h:outputText> 
    </h:column> 
    <h:column> 
    <f:facet name="header"> 
     <h:outputText value="Product name"></h:outputText> 
    </f:facet> 
    <h:inputText value="#{x.productName}" rendered="#{x.editable}"></h:inputText> 
    <h:outputText value="#{x.productName}" rendered="#{not x.editable}"></h:outputText> 
    </h:column> 
    <h:column> 
    <f:facet name="header"> 
     <h:outputText value="Price"></h:outputText> 
    </f:facet> 
    <h:inputText value="#{x.price}" rendered="#{x.editable}"></h:inputText> 
    <h:outputText value="#{x.price}" rendered="#{not x.editable}"></h:outputText> 
    </h:column> 
    <h:column> 
    <f:facet name="header"> 
     <h:outputText value="Quantity"></h:outputText> 
    </f:facet> 
    <h:inputText value="#{x.qty}" rendered="#{x.editable}"></h:inputText> 
    <h:outputText value="#{x.qty}" rendered="#{not x.editable}"></h:outputText> 
    </h:column> 
</h:dataTable> 
<h:commandButton value="AddNew" action="#{user.add}"></h:commandButton> 
+2

В чем проблема, ваш вопрос немного непонятен? –

+0

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

+0

Я не могу открыть поля «добавления» в нижней части списка для ввода нового пользователя! –

ответ

0

Если вы хотите добавить еще значение, как ваш первый метод в свой список, то вы можете сделать так:

//myList = new ArrayList<>(); you dont need to use this, this can empty your list 

myList = getUsers();//get your List 
Values newValue = new Values(this.id, this.orderNo, this.productName, this.price, this.qty); 

//add a new element to your list 
newValue.setEditable(true); 
myList.add(newValue); 

NB

У вас есть проблемы в вашем XHTML:

<h:commandButton value="AddNew" action="#{user.add}"></h:commandButton> 

Так что если вы попытаетесь позвонить addNewUser(), тогда это не сработает с вами.

Решение

Это может назвать ваш метод addNewUser()

<h:commandButton value="AddNew" action="#{user.addNewUser}"></h:commandButton> 

так что после этого:

Вы должны обновить ваш DataTable

<h:commandButton value="AddNew" action="#{user.addNewUser}" update="idOfYourDataTable"/> 

Не забыл добавить идентификатор к вашему DataTable:

<h:dataTable value="#{user.information}" var="x" border="1" id="idOfYourDataTable"> 

... 

Другое дело:

<h:dataTable value="#{user.information}" 

Убедитесь, что в вашем managedBean в List<Values> information, потому что код, который вы положили, нет никакой информации Список.

Надеюсь, это может вам помочь.

+0

1. - Я был невнимателен к своей ошибке, - экспериментируйте с другим методом. 2. Список информации - использую: public List getInformation() { return getUsers(); } –

+0

Благодарим вас за советы, пытаясь исправить мои ошибки! –

+0

@ЖадовецИван, в чем же проблема? что вы хотите сделать, вы получили какую-либо ошибку? мое решение работает с вами или нет? –

Смежные вопросы