怎么不把代码贴出来呢?一般是因为ResultSet返回值为空,你看看你的搜索结果是不是有问题。

解决方案 »

  1.   

    可能试你缺少这一句:
    while(rs.next())
     {
       .....
     }
      

  2.   

    不是少了那一句,我的意思是在正常的情况下出现,所以觉得奇怪public void run() { String id="",command="",ip="";
    Statement st=null;
    ResultSet rs=null; while(true){
    try{
    st = Conn.getConn().createStatement();
    rs = st.executeQuery("select * from COMMAND where if_done=0"); String sql = ""; while(rs.next()){
    id = rs.getString("id");
    command = rs.getString("command");
    ip = rs.getString("ip"); System.out.println("写文件");
    //写文件
    writeFile(id,command,ip); sql = sql+id+",";
    }
    if(rs!=null){
    rs.close();
    }
    if(!sql.equals("")){
    st.executeUpdate("update COMMAND set if_do=1 where id in ("+sql.substring(0,sql.lastIndexOf(","))+")");
    } if(st!=null){
    st.close();
    } }catch(Exception e){ e.printStackTrace(System.out); }

    try{this.sleep(10*1000);}catch (Exception e){}
    }
    }
      

  3.   

    可能是你没取到结果集,但又对rs做了next动作
    不清楚是哪个地方抛出的nullpoint
      

  4.   

    我刚才试了一下,直接把rs=null,然后rs.next(),会出现java.lang.NullPointerException
    然后出现错误的位置并没有这两句
    at com.microsoft.jdbc.base.BaseResultSet.cancelPendingUpdates(Unknown Source)
    at com.microsoft.jdbc.base.BaseResultSet.next(Unknown Source)
      

  5.   

    Conn.java
    ===========================
    import java.sql.*;public class Conn
    {
     public static Connection getConn(){
      Connection conn=null;
      try {
       Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance(); 
       String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=mydb"; 
       String user="sa"; 
       String password=""; 
       conn= DriverManager.getConnection(url,user,password); 
      }catch(Exception e){e.printStackTrace();}
      return conn;
     }
    }