Привет, ребята, у меня есть таблица данных в JSF, которая отображает все содержимое моей таблицы базы данных, она отображает ее в порядке, у меня также есть функция удаления, которая может успешно удалить из базы данных в порядке и обновляет таблицу данных штраф, однако, когда я пытаюсь обновить базу данных я получаю ошибкуНевозможно отредактировать строку базы данных из JSF
java.lang.IllegalArgumentException: Cannot convert [email protected] of type class richard.test.User to long
ниже код, который я использую, чтобы удалить строки в базе данных, которая работает отлично:
public void delete(long userID) {
PreparedStatement ps = null;
Connection con = null;
if (userID != 0) {
try {
Class.forName("com.mysql.jdbc.Driver");
con = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "root");
String sql = "DELETE FROM user1 WHERE userId=" + userID;
ps = con.prepareStatement(sql);
int i = ps.executeUpdate();
if (i > 0) {
System.out.println("Row deleted successfully");
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
con.close();
ps.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
Я просто хотел отредактировать приведенный выше код, чтобы он обновлял re Шнуры вместо их удаления, так что я редактировал его выглядеть следующим образом:
public void editData(long userID) {
PreparedStatement ps = null;
Connection con = null;
if (userID != 0) {
try {
Class.forName("com.mysql.jdbc.Driver");
con = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "root");
String sql = "UPDATE user1 set name = '"+name+"', email = '"+ email +"', address = '"+address+"' WHERE userId=" + userID;
ps = con.prepareStatement(sql);
int i = ps.executeUpdate();
if (i > 0) {
System.out.println("Row updated successfully");
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
con.close();
ps.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
и XHMTL является:
<p:dataTable id="dataTable" var="u" value="#{userBean.getUserList()}"
paginator="true" rows="10"
editable="true"
paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
rowsPerPageTemplate="5,10,15">
<p:column>
<f:facet name="header">
User ID
</f:facet>
#{u.userID}
</p:column>
<p:column>
<f:facet name="header">
Name
</f:facet>
#{u.name}
</p:column>
<p:column>
<f:facet name="header">
Email
</f:facet>
#{u.email}
</p:column>
<p:column>
<f:facet name="header">
Address
</f:facet>
#{u.address}
</p:column>
<p:column>
<f:facet name="header">
Created Date
</f:facet>
#{u.created_date}
</p:column>
<p:column>
<f:facet name="header">
Delete
</f:facet>
<h:commandButton value="Delete" action="#{user.delete(u.userID)}" />
</p:column>
<p:column>
<f:facet name="header">
Delete
</f:facet>
<h:commandButton value="Edit" action="#{user.editData(u)}" />
</p:column>
В настоящее время при нажатии кнопки редактирования будет только обновить его с теми же значениями, как я еще не удалось получить доступ к данным для редактирования с помощью базы данных, я видел несколько примеров с массивом, в котором таблица данных получает свои значения, но никогда не является базой данных, поэтому, если у вас есть какие-либо советы по этому поводу, отличное
спасибо
Большое спасибо, что зафиксировал его жаль, что быть просто ошибка его был длинный день! – user1924104
@ user1924104 обратите внимание на мое обновление ответа, включает некоторые советы для вашего текущего подхода –
Хорошо спасибо, я подробно рассмотрю их завтра – user1924104