小弟用SWING做一个系统!!数据库是sql server 2000
现在数据库是可以连的上
但是常常报异常!!
谁哪为高手能帮我看一下面的异常是什么意思??
java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Invalid operation for the current cursor position.
at com.microsoft.jdbc.base.BaseExceptions.createException(Unknown Source)
at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
at com.microsoft.jdbc.base.BaseResultSet.validateCursorPosition(Unknown Source)
at com.microsoft.jdbc.base.BaseResultSet.getString(Unknown Source)
at com.microsoft.jdbc.base.BaseResultSet.getString(Unknown Source)
at data.DataBase.accseedatabasic(DataBase.java:26)
at information.BasicPanel$set_hander.UpdateRecord(BasicPanel.java:187)
at information.BasicPanel$set_hander.actionPerformed(BasicPanel.java:162)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1849)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2169)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:420)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:258)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
at java.awt.Component.processMouseEvent(Component.java:5488)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3126)
at java.awt.Component.processEvent(Component.java:5253)
at java.awt.Container.processEvent(Container.java:1966)
at java.awt.Component.dispatchEventImpl(Component.java:3955)
at java.awt.Container.dispatchEventImpl(Container.java:2024)
at java.awt.Component.dispatchEvent(Component.java:3803)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4212)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3892)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3822)
at java.awt.Container.dispatchEventImpl(Container.java:2010)
at java.awt.Window.dispatchEventImpl(Window.java:1778)
at java.awt.Component.dispatchEvent(Component.java:3803)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:463)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:242)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)

解决方案 »

  1.   

    我要看 DataBase类的accseedatabasic方法
      

  2.   


    public Record accseedatabasic(String id) throws Exception {
     Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
      con=DriverManager.getConnection(url,"sa","");
      stm=con.createStatement();
      String sql="select * from student_information where id='"+id+"'";
      rs=stm.executeQuery(sql);
      Record result=new Record();
      result.setname(rs.getString("name"));
      result.setage(rs.getString("age"));
      result.setsex(rs.getString("sex"));
      result.setbrithday(rs.getString("brithday"));
      result.setnumber(rs.getString("number"));
      result.setpath(rs.getString("path"));
      result.settype(rs.getString("type"));
      rs.close();
      stm.close();
      con.close();
    return result;
    }
      

  3.   

    ResultSet 一开始其内部指针是在第一行记录的前面,你不先移下来,当然是空指针错误
      

  4.   


    改为
    public Record accseedatabasic(String id) throws Exception {
     Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
      con=DriverManager.getConnection(url,"sa","");
      stm=con.createStatement();
      String sql="select * from student_information where id='"+id+"'";
      rs=stm.executeQuery(sql);
      Record result=new Record();
    if(rs.next())
    {
      result.setname(rs.getString("name"));
      result.setage(rs.getString("age"));
      result.setsex(rs.getString("sex"));
      result.setbrithday(rs.getString("brithday"));
      result.setnumber(rs.getString("number"));
      result.setpath(rs.getString("path"));
      result.settype(rs.getString("type"));
    }
      rs.close();
      stm.close();
      con.close();
    return result;
    }
      

  5.   

    呵呵
    知道了
    谢谢大家了啊!!
    我做的添加记录也显示空指针!!
    请再告诉我又犯了啥错误啊??
    原代码 : public void storebasic(Record record) throws Exception {
     Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
      con=DriverManager.getConnection(url,"sa","");
      stm=con.createStatement();
      String sql="select * from student_information where id='"+record.getid()+"'";
      stm.executeQuery(sql);
      if(rs.next()){
      sql="update student_information set id='"+record.getid()+"', "+"" +
       " name='"+record.getname()+"', "+" age='"+record.getage()+"', "+" " +
       "sex='"+record.getsex()+"', "+" brithday='"+record.getbrithday()+"', " +
       ""+" number='"+record.getnumber()+"', "+" path='"+record.getpath()+"', " +
       ""+" type='"+record.gettype()+"'";
      stm.executeUpdate(sql);
     
      }
     
      else{
      sql="insert student_information(id,name,age,sex,brithday,number,path,type)"+"" +
       "values('"+record.getid()+"', '"+record.getname()+"','"+record.getage()+"'," +
       "'"+record.getsex()+"', '"+record.getbrithday()+"'," +
       "'"+record.getnumber()+"', '"+record.getnumber()+"', " +
       "'"+record.gettype()+"')";
      stm.executeUpdate(sql);
      
      
      }
      rs.close();
      stm.close();
      con.close();

    }