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");
}
}
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");
}
}
换成
e.printStackTrace();看看输出是什么?
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)
String sql="select status from icq where icqno=" + temp;icqno是字符型:
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=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("用户不存在");
}
}
之后需要掉用
rs.next()才能使用 rs.getInt rs.getString等方法。并且rs.next,如果返回是false。 表示没有找到记录也是不能使用以上方法的。