Я писал код Java для аутентификации и обновления учетных данных для моего инструмента отчетности о доходах.java: resultSet error
getName()
- это функция для запроса имени пользователя, а затем перекрестная проверка моей базы данных на любые повторяющиеся записи и, соответственно, добавление.
Моя проблема в том, что когда я предоставляю другое имя при запуске, он работает и добавляет имя в базу данных. Но когда я обеспечиваю дубликат имя, а затем указать другое имя он дает мне эту ошибку:
Exception in thread "main" java.sql.SQLException: Operation not allowed after ResultSet closed
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1078)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:989)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:975)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:920)
at com.mysql.jdbc.ResultSetImpl.checkClosed(ResultSetImpl.java:804)
at com.mysql.jdbc.ResultSetImpl.next(ResultSetImpl.java:6986)
at database_console1.test2.getName(test2.java:67)
at database_console1.test2.getName(test2.java:74)
at database_console1.test2.getName(test2.java:74)
at database_console1.test2.getName(test2.java:74)
at database_console1.test2.getName(test2.java:74)
at database_console1.test2.getName(test2.java:74)
at database_console1.test2.main(test2.java:44)
Java Result: 1
BUILD SUCCESSFUL (total time: 20 seconds)
Вот моя функция.
public void getName() throws SQLException {
String sqla = "SELECT * FROM veuser where UserName = ?" ;
String sql = "INSERT INTO veuser (UserName) VALUES (?)";
boolean b = true;
while (b) {
System.out.println("Enter your username");
name = sc.nextLine();
if (!"".equals(name)) {
b = false;
} else {
System.out.println("Username cant be left blank");
}
}
ps = conn.prepareStatement(sqla);
ps.setString(1, name);
rs = ps.executeQuery();
while (rs.next()) {
String i = rs.getString(2);
System.out.println(i);
if (i.equals(name)) {
System.out.println("User already exists.Choose another username");
getName();
}
}
os = conn.prepareStatement(sql);
os.setString(1, name);
int row = os.executeUpdate();
if (row > 0){
System.out.println("Successfully added...");
ps.close();
os.close();
}