不知是哪里出了问题,错误提示是:before start of result set.帮帮忙,谢谢大家!
package submitData.struts.action;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;import submitData.struts.form.SubmitForm;public class Submit_updateAction extends Action   
{
         public ActionForward execute(
ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response) 
throws Exception
{

String ID = request.getParameter("id");
java.sql.Connection sqlConn; 
java.sql.Statement sqlStmt; 
java.sql.ResultSet sqlRst;  

String DBUser="root"; 
String DBPassword="xxc"; 
String DBServer="xxc";  
String DBNAME="school";   Class.forName("org.gjt.mm.mysql.Driver").newInstance();  
sqlConn=java.sql.DriverManager.getConnection            ("jdbc:mysql://"+DBServer+":3306/"+DBNAME,DBUser,DBPassword); 
sqlStmt=sqlConn.createStatement(); 
sqlRst=sqlStmt.executeQuery("select * from student where std_ID = '" + ID + "';"); 
//以上是连接数据库以及执行一条sql语句
SubmitForm subForm = (SubmitForm)form;

String stdId = sqlRst.getString("std_ID");
String stdName = sqlRst.getString("std_Name");
String stdAge = sqlRst.getString("std_Age");
String stdYear = sqlRst.getString("std_Year");
String stdDept = sqlRst.getString("std_Dept");
String stdMemo = sqlRst.getString("std_Memo");

subForm.setStd_ID(stdId);
subForm.setStd_Name(stdName);
subForm.setStd_Age(stdAge);
subForm.setStd_Year(stdYear);
subForm.setStd_Dept(stdDept);
subForm.setStd_Memo(stdMemo);
request.setAttribute("submitForm",form);

                   //以上是将数据传给Form

sqlRst.close(); 
sqlStmt.close(); 
sqlConn.close(); 

return mapping.findForward("display_Modify");
}}

解决方案 »

  1.   

    sqlRst=sqlStmt.executeQuery("select * from student where std_ID = '" + ID + "';"); 
    后边加一句
    sqlRst.next();
      

  2.   

    楼上正解。
    因为结果集开始的时候是指向第一条记录的前面的,所以需要next一下。
    一般这样写(多条记录):
    while(rs.next())
    {
        //operation
    }
    (一条记录)
    if(rs.next())
    {
        //operation
    }
      

  3.   

    可以在查询以后加上循环,这样就没有问题了,不过强烈建议楼主将数据持久化和业务逻辑分开来。try{
    sqlRst=sqlStmt.executeQuery("select * from student where std_ID = '" + ID + "';"); 
    //以上是连接数据库以及执行一条sql语句
    ubmitForm subForm = (SubmitForm)form;
    while(sqlRst!=null&&sqlRst.next()){
    String stdId = sqlRst.getString("std_ID");
    String stdName = sqlRst.getString("std_Name");
    String stdAge = sqlRst.getString("std_Age");
    String stdYear = sqlRst.getString("std_Year");
    String stdDept = sqlRst.getString("std_Dept");
    String stdMemo = sqlRst.getString("std_Memo");

    subForm.setStd_ID(stdId);
    subForm.setStd_Name(stdName);
    subForm.setStd_Age(stdAge);
    subForm.setStd_Year(stdYear);
    subForm.setStd_Dept(stdDept);
    subForm.setStd_Memo(stdMemo);
    request.setAttribute("submitForm",form);
    }
                       //以上是将数据传给Form

    sqlRst.close(); 
    sqlStmt.close(); 
    sqlConn.close(); 
    }catch(Exception e){
             e.printStackTrace();
    }
      

  4.   

    sorry大家,我忘表述我的功能了,我想做修改数据功能,所以我是想把一条记录放在表单里.