该程序正在从数据库中检索数据。我需要在程序中使用字符串变量。但是当我将ResultSet String值放入String变量中并在运行程序后显示'java.sql.SQLException: Before start of result set'时。

这是我的代码:

try{
 // for database connection

    Class.forName("com.mysql.jdbc.Driver");
    Connection con=DriverManager.getConnection("jdbc:mysql://localhost:3306/email_auto_responder","root","");

    Statement stmt=con.createStatement();
    ResultSet EmailAccounts = stmt.executeQuery("SELECT * FROM `clemailaccounts`");

String hostSubtract = EmailAccounts.getString(2).substring(EmailAccounts.getString(2).indexOf("@"));
String partiallyCompanyName = hostSubtract.replace("@", "");
String companyName = partiallyCompanyName.replace(".com", "");


   while(EmailAccounts.next()) {

  System.out.println(EmailAccounts.getInt(1)+"  "+EmailAccounts.getString(2)+"  "+ companyName +"  "+EmailAccounts.getString(4));
                + "\n");
        }
}
   catch(Exception e)
 { System.out.println(e);}


在某些示例中,我看到了它们在String变量中使用结果集值。但是我不确定为什么会出现此错误。 Eclips中还有另一件事,它也未显示任何错误。但是运行代码后,我得到了这个异常。任何帮助将不胜感激。提前致谢

最佳答案

您的光标在第一行之前,然后您在请求数据。您需要将光标移动到第一行。首先执行EmailAccounts.next()然后获取String

10-05 18:32