在我发布问题之前,我尝试了所有解决方案,但我无法解决我的问题。任何人都可以帮我找到解决方案吗?
我试图从“电子邮件”表中获取数据,但每次调用此异常
java.sql.SQLException:ResultSet为TYPE_FORWARD_ONLY at org.sqlite.jdbc4.JDBC4ResultSet.first(JDBC4ResultSet.java:402)at at HMDao.EmailDao.FindString(EmailDao.java:144)at hmproject.StartingController.initialize(StartingController.java:103) 在javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2548)at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2441)at at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2409)at at hmproject.HMProject.start(HMProject.java:34)at com.sun.javafx.application.LauncherImpl.lambda $ launchApplication1 $ 163(LauncherImpl.java:863) 在 com.sun.javafx.application.PlatformImpl.lambda $ runAndWait $ 176(PlatformImpl.java:326) 在 com.sun.javafx.application.PlatformImpl.lambda为$ null $ 174(PlatformImpl.java:295) 在java.security.AccessController.doPrivileged(Native Method)at com.sun.javafx.application.PlatformImpl.lambda $ runLater $ 175(PlatformImpl.java:294) 在 com.sun.glass.ui.InvokeLaterDispatcher $ Future.run(InvokeLaterDispatcher.java:95) at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)at com.sun.glass.ui.win.WinApplication.lambda $ $空149(WinApplication.java:191)
这是我的代码:
public Email FindString(String ID) {
Email email = null;
String querySelectEmployer = "SElECT Email,Password FROM Email";
try {
ResultSet resultSet = Dbaconnection.getConnection().createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY).executeQuery(querySelectEmployer);
if (resultSet.first()) {
email = new Email(resultSet.getString("Email"), resultSet.getString("Password"));
}
resultSet.close();
} catch (SQLException ex) {
ex.printStackTrace();
}
return email;
}
答案 0 :(得分:3)
这是因为first()
指的是绝对位置"在数据集中,仅适用于游标结果集。
由于您不需要重新定位,只需将光标移动到初始记录,将first()
的调用替换为next()
即可:
if (resultSet.next()) {
email = new Email(resultSet.getString("Email"), resultSet.getString("Password"));
}