public class userStatusServiceImpl {
    
public  static void main(String args[]){
String temp=null;
String sqlDBDriver = "sun.jdbc.odbc.JdbcOdbcDriver";
     String url="jdbc:odbc:myIM"; 
Connection con = null;
Statement stmt=null;
ResultSet rs = null;
BufferedReader input=new BufferedReader(new InputStreamReader(System.in)); 
try { 
try { 
Class.forName(sqlDBDriver); //加载驱动 
}catch(ClassNotFoundException e){ 
System.out.println("Can not load Jdbc-Odbc Bridge Driver"); 
System.err.print("ClassNotFoundException:"); 
System.err.println(e.getMessage()); 

con=DriverManager.getConnection(url,"sa","1qazxsw23edc"); //使用SQL-SERVER2000认证 
stmt=con.createStatement(); 
temp=input.readLine(); 
String sql="select status from icq where icqno=+temp";
rs=stmt.executeQuery(sql);
int status=rs.getInt("status");
if(status==0){
System.out.println("用户不在线");}
else {
if(status==1){
System.out.println("用户在线");}
else{
System.out.println("用户不存在");
}
}
rs.close();
stmt.close();
con.close();
}catch(Exception e) { 
System.out.println("IOException");

}

解决方案 »

  1.   

    System.out.println("IOException");
    换成
    e.printStackTrace();看看输出是什么?
      

  2.   

    打印出的内容为
    SQLException
    java.sql.SQLException: [Microsoft][ODBC 驱动程序管理器] 无效的游标状态
    at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6956)
    at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7113)
    at sun.jdbc.odbc.JdbcOdbc.SQLGetDataInteger(JdbcOdbc.java:3810)
    at sun.jdbc.odbc.JdbcOdbcResultSet.getDataInteger(JdbcOdbcResultSet.java:5637)
    at sun.jdbc.odbc.JdbcOdbcResultSet.getInt(JdbcOdbcResultSet.java:582)
    at sun.jdbc.odbc.JdbcOdbcResultSet.getInt(JdbcOdbcResultSet.java:600)
    at com.demo.userStatusServiceImpl.main(userStatusServiceImpl.java:35)
      

  3.   

    String sql="select status from icq where icqno=+temp 你这语句都不正确
      

  4.   

    icqno是数值型:
    String sql="select status from icq where icqno=" + temp;icqno是字符型:
    String sql="select status from icq where icqno='" + temp + "'";
      

  5.   


    rs=stmt.executeQuery(sql);
    int status=rs.getInt("status");
    if(status==0){
    System.out.println("用户不在线");}
    else {
    if(status==1){
    System.out.println("用户在线");}
    else{
    System.out.println("用户不存在");
    }
    }
    改成rs=stmt.executeQuery(sql);
    int status = -1;
    if (rs.next()) {
    status=rs.getInt("status");
    }if(status==0){
    System.out.println("用户不在线");}
    else {
    if(status==1){
    System.out.println("用户在线");}
    else{
    System.out.println("用户不存在");
    }
    }
      

  6.   

    rs=stmt.executeQuery(sql);
    之后需要掉用
    rs.next()才能使用 rs.getInt rs.getString等方法。并且rs.next,如果返回是false。 表示没有找到记录也是不能使用以上方法的。