这就是我到目前为止所做的。它也已经连接到以用户名为主键的数据库。
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
try {
Accounts bean = new Accounts();
bean.setUsername(request.getParameter("uname"));
bean.setName(request.getParameter("fname"));
bean.setEmail(request.getParameter("email"));
bean.setPassword(request.getParameter("password"));
AccountsDAO aO = new AccountsDAO();
aO.addAccount(bean);
response.sendRedirect("Stream.jsp");
}
finally{
}
}
我想要的是,当我尝试使用数据库中任何现有用户的相同用户名/电子邮件注册帐户时,它将重定向到另一个页面,该页面也使用 response.sendRedireect("file.jsp") ;这将要求用户使用另一个用户名/电子邮件再次注册。提前致谢!
这是我的 AccountsDAO
public void addAccount(Accounts bean) {
try {
bConnector = new DBConnector();
Connection c = bConnector.getConnection();
String query = "insert into account (username, name, email, password) values (?,?,?,?)";
PreparedStatement preparedstatement = c.prepareStatement(query);
preparedstatement.setString(1, bean.getUsername());
preparedstatement.setString(2, bean.getName());
preparedstatement.setString(3, bean.getEmail());
preparedstatement.setString(4, bean.getPassword());
preparedstatement.executeUpdate();
} catch (SQLException ex) {
Logger.getLogger(AccountsDAO.class.getName()).log(Level.SEVERE, null, ex);
}
}
最佳答案
一旦您将 username
作为主要用户,它将不允许插入重复项。所以像这样尝试
try
{
//query to insert your username which you get from user
}
如果它是重复的,它会抛出一个异常作为 ora-
,所以使用 catch block 使用页面重定向来处理异常。
catch(Exception e)
{
system.out.print(e);
response.sendRedirect("file.jsp");
}
更新
声明一个 integer
变量来检查您是否插入了值。同时将方法 addAccount(Accounts bean)
的返回类型更改为 int
public int addAccount(Accounts bean) {
int count=0;
try {
bConnector = new DBConnector();
Connection c = bConnector.getConnection();
String query = "insert into account (username, name, email, password) values (?,?,?,?)";
PreparedStatement preparedstatement = c.prepareStatement(query);
preparedstatement.setString(1, bean.getUsername());
preparedstatement.setString(2, bean.getName());
preparedstatement.setString(3, bean.getEmail());
preparedstatement.setString(4, bean.getPassword());
count=preparedstatement.executeUpdate();
} catch (SQLException ex) {
Logger.getLogger(AccountsDAO.class.getName()).log(Level.SEVERE, null, ex);
}
return count;
}
在你的 servlet 中,
int count=0;
try {
Accounts bean = new Accounts();
bean.setUsername(request.getParameter("uname"));
bean.setName(request.getParameter("fname"));
bean.setEmail(request.getParameter("email"));
bean.setPassword(request.getParameter("password"));
AccountsDAO aO = new AccountsDAO();
count=aO.addAccount(bean);
if(count>0){
response.sendRedirect("Stream.jsp"); \\Success condition here
}
else{
response.sendRedirect("file.jsp"); \\ failure condition here
}
}
catch(Exception e)
{
system.out.print(e);
}
希望这对您有所帮助!
关于Java - 如何检查数据库中的现有用户(用于注册界面)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22960707/