我正在尝试进行电子邮件订阅,用户在其中输入他们的电子邮件,mySQL 中的“空”字段将更新为提供的电子邮件地址。这是我到目前为止所拥有的:
public boolean subscribeMember(MemberDTO memberDTO) {
boolean isSubscribe = false;
try {
getConnection();
pstmt = conn.prepareStatement("SELECT EMAIL FROM MEMBER WHERE MEMBER_ID = ?");
pstmt.setString(1, memberDTO.getMemberId());
rs = pstmt.executeQuery();
if (rs == null) {
pstmt = conn.prepareStatement("UPDATE MEMBER SET EMAIL = ? WHERE MEMBER_ID = ?");
pstmt.setString(1, memberDTO.getEmail());
pstmt.setString(2, memberDTO.getMemberId());
pstmt.executeUpdate();
isSubscribe = true;
}
} catch (Exception e) {
e.printStackTrace();
} finally {
getClose();
}
return isSubscribe;
}
这就是我对 subscribePro 的看法:
<%
request.setCharacterEncoding("utf-8");
MemberDTO memberDTO = new MemberDTO();
memberDTO.setMemberId(request.getParameter("memberId"));
memberDTO.setEmail(request.getParameter("email"));
if (MemberDAO.getInstance().subscribeMember(memberDTO)){
%>
<script>
alert ("Thanks for joining our mailing list!");
location.href = "main.jsp";
</script>
<%
}
else{
%>
<script>
alert ("You are already on our mailing list!");
location.href = "main.jsp";
</script>
<%
}
%>
即使 mySQL 中的 email 字段为 null,它仍然运行 else。我应该修理什么?
if (rs == null) {
pstmt = conn.prepareStatement("UPDATE MEMBER SET EMAIL = ? WHERE MEMBER_ID = ?");
对于这部分我试过“if (rs.next())”
我也尝试过(插入成员值?WHERE MEMBER_ID =?);