我想删除MySQL表中的行,这是我的admin.xhtml:
<h:form>
<h:dataTable value="#{userController.items}"
var="item" border="0" cellpadding="2"
cellspacing="0" rules="all"
style="border:solid 1px">
<h:column>
<f:facet name="header">
<h:outputText value="#{bundle.ListUserTitle_iduser}"/>
</f:facet>
<h:outputText value="#{item.iduser}"/>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="#{bundle.ListUserTitle_username}"/>
</f:facet>
<h:outputText value="#{item.username}"/>
</h:column>
<h:column>
<h:commandLink action="#{userController.destroyUser(item.iduser)}"
value="#{bundle.ListUserDestroyLink}"/>
</h:column>
</h:dataTable>
</h:form>
然后在我的userController
我有一个方法destroyUser
。
public String destroyUser(int iduser) {
try {
Connection con = ds.getConnection();
String sql = "DELETE FROM projekt2.user WHERE iduser =" + iduser;
PreparedStatement ps = con.prepareStatement(sql);
ps.executeUpdate();
} catch (SQLException ex) {
Logger.getLogger(UserController.class.getName()).log(Level.SEVERE, null, ex);
}
return "admin";
}
我知道写这样的SQL查询并不好,无论如何在点击destroy链接之后没有任何反应,除非我点击以销毁我当前登录的用户,然后将其从表中删除。我无法删除任何其他用户。但是,由于#{item.iduser}
得到正确的值,那么#{userController.destroyUser(item.iduser)}
应该得到正确的值吗?
@edit
好吧我想我知道问题所在。我的用户表上有另一个带有外键的表(每个添加的广告都有userId作为外键)这就是为什么它阻止我删除至少添加了1个广告的用户(admin didn&#39有任何所以我能删除他)。你能告诉我在哪里可以改变它,它可以工作,在数据库中的某个地方,或者在我的实体中?我正在使用MySQL Workbench
答案 0 :(得分:0)
我想通了,我的用户表上有另外一张带有外键的表(每个添加的广告都有userId作为外键)这就是为什么它阻止我删除至少有1个广告的用户添加。因此,我必须在MySQL Workbench的外键选项中将“On Delete”选项设置为“Cascade”(或者可以设置不同的值)。
感谢Tiny的回答,我的评论可能有点误导