【发布时间】:2016-12-03 16:14:05
【问题描述】:
我有一个实现动作监听器的注册对话框。如果用户输入了一个名称并且它已经存在,我想在控制台上打印一条消息。如果用户名不存在,MySQL 应该将其添加到数据库中。不幸的是,这段代码不起作用:
private void regButtonActionPerformed(java.awt.event.ActionEvent evt) {
if(!userBox.getText().equals(""))
{
try
{
Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/genx", "root", "Warlock1989");
Statement stmt = con.createStatement();
String query = "SELECT name FROM accounts";
ResultSet rs = stmt.executeQuery(query);
while(rs.next())
{
String uname = rs.getString("name");
if(!uname.equals(userBox.getText()))
{
PreparedStatement pstmt = con.prepareStatement("INSERT INTO accounts(name) VALUES(?)");
pstmt.setString(1, userBox.getText());
pstmt.executeUpdate();
System.out.println("Username " + userBox.getText() + " has been registered.");
}
else
{
System.out.println("Username " + userBox.getText() + " already exists.");
}
}
}
catch(Exception ex)
{
ex.printStackTrace();
}
}
【问题讨论】:
-
“行不通”是什么意思?
-
打印你的堆栈跟踪
-
没有堆栈跟踪。什么都没有发生。它不调用 if、else 或 catch。
-
你的桌子是空的吗?因为这样 select 将不返回任何行,
rs.next()将返回false...