2016-01-13 53 views
0

我正在尝试创建一个电子邮件管理系统。以下是撰写电子邮件的代码,但它引发了一个错误“ResultSet开始之前”。你可以帮我吗?撰写邮件错误。 “在开始ResultSet之前。”

String To = to.getText(); 
String Cc = cc.getText(); 
String Bcc = bcc.getText(); 
String Sub = sub.getText(); 
String Msg = text.getText(); 
if(To.equals("") || Sub.equals("") || Msg.equals("")) 
{ 
JOptionPane.showMessageDialog(null, "Please Fill All Appropiate Details"); 
} 
else 
{ 
try { 

    Class.forName("com.mysql.jdbc.Driver"); 
    Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/email management system","root", "ok"); 
    Statement stmt = con.createStatement(); 
    ResultSet rs = stmt.executeQuery("select first,email,mail,name from login,curlogin;"); 
    String from =rs.getString("mail"); 
     String frmname =rs.getString("name"); 
    String recipent = ""; 
    String rname = ""; 
    Boolean tof; 
    loop1: while(rs.next()) 
    { 
     recipent = rs.getString("email"); 
      rname = rs.getString("first"); 
     if(recipent.equals(To)) 
      { 
       tof = true; 
       break loop1; 

     } 
      else 
      { 
       tof= false; 
      } 
    } 
    if(tof=true) 
    { 
     stmt.executeUpdate("Insert into inbox Values('"+frmname+"','"+Sub+"','"+Msg+"',curDate(), curTime(),'"+rname+"','"+from+"');"); 
       new inbox().setVisible(true); 
     this.dispose(); 
    } 
    else 
    { 
     JOptionPane.showMessageDialog(null,"Sorry the 'To' Email you entered does not exist."); 
    } 
    ResultSet rs1 = stmt.executeQuery("select first,email,mail,name from login,curlogin;"); 
    Boolean taf = false; 
    Boolean entered = false; 
    loop2: while(rs1.next()) 
    { 
     recipent = rs1.getString("email"); 
      rname = rs1.getString("first"); 
     if(Cc.equals("")) 
       { 

       } 
     else 
     { 
      entered= true; 
      if(recipent.equals(Cc)) 
      { 
       taf = true; 
       break loop2; 

     } 
      else 
      { 
       taf= false; 
      } 
     } 
    } 
    if(entered=true) 
    { 
    if(taf=true) 
    { 
     stmt.executeUpdate("Insert into inbox Values('"+frmname+"','"+Sub+"','"+Msg+"',curDate(), curTime(),'"+rname+"','"+from+"');"); 
       new inbox().setVisible(true); 
     this.dispose(); 
    } 
    else 
    { 
     JOptionPane.showMessageDialog(null,"Sorry the 'CC' Email you entered does not exist."); 
    } 
    } 
    ResultSet rs2 = stmt.executeQuery("select first,email,mail,name from login,curlogin;"); 
    Boolean fot=false; 
    Boolean entered2 =false; 
    loop3: while(rs2.next()) 
    { 
     recipent = rs2.getString("email"); 
      rname = rs2.getString("first"); 
     if(Bcc.equals("")) 
     { 

     } 
     else 
     { 


      if(recipent.equals(Bcc)) 
      { 
       fot = true; 
       break loop3; 

     } 
      else 
      { 
       fot= false; 
      } 
     } 
    } 
    if(entered2=true) 
    { 
    if(fot=true) 
    { 
     stmt.executeUpdate("Insert into inbox Values('"+frmname+"','"+Sub+"','"+Msg+"',curDate(), curTime(),'"+rname+"','"+from+"');"); 
     new inbox().setVisible(true); 
     this.dispose(); 
    } 
    else 
    { 
     JOptionPane.showMessageDialog(null,"Sorry the 'CC' Email you entered does not exist."); 
    } 

    } 

} 

难道是因为创建了多个结果集吗?或者是因为创建了多个while语句?

+0

请确保您有合理的,一致的缩进发布您的代码,如果你有求于人,试图读取它。 – khelwood

回答

1

以下是无效:

ResultSet rs = stmt.executeQuery("select first,email,mail,name from login,curlogin;"); 
String from =rs.getString("mail"); 
String frmname =rs.getString("name"); 

执行查询在位置返回ResultSet -1。您需要通过迭代器或首先调用rs.next();(假设您有任何结果)来访问它。

+0

非常感谢..解决了问题:) –

1

你需要调用rs.next()之前,首先要访问它:

ResultSet rs = stmt.executeQuery("select first,email,mail,name from login,curlogin;"); 
if(rs.next()) { //Advances cursor to first/next row 
    String from =rs.getString("mail"); 
    String frmname =rs.getString("name"); 

话又说回来 - 带标签的循环是一种GOTO在这里 - 你可能要重新思考while(rs.next())循环也。

1

您需要先移动ResultSet的光标,然后才能从中获取值。在致电rs.getString("mail")之前,请使用rs.first()rs.next()

例:

ResultSet rs = stmt.executeQuery("select first,email,mail,`name from login`,curlogin;"); 
String from; 
if(rs.first()){ 
    from =rs.getString("mail"); 
}