import java.io.*;
import java.sql.*;
public class Test2
{ public static void main(String[] args)
 {
   String driverName="sun.jdbc.odbc.JdbcOdbcDriver";  
   String dbURL="jdbc:odbc:master";
   String userName="sa";
   String userPwd="";
   Connection dbConn;
   try{
    Class.forName(driverName);
    dbConn=DriverManager.getConnection(dbURL,userName,userPwd);
    Statement stmt=dbConn.createStatement();
    System.out.println("Connection Successful!"); 
    ResultSet rs=stmt.executeQuery("SELECT * FROM student");
    }
    catch(Exception e)
     {
         e.printStackTrace();
     }
     while(rs.next())
     {
         System.out.println(rs.getObject(1)+"->"+rs.getObject(2)); 
     }
   }
}
这个程序能连上数据源master,这没问题,但是编译时却提示找不到符号rs,不知道为什么,请高手指点,在此先谢了!!!

解决方案 »

  1.   

    因为你的rs定义在try块,却在最后的while中使用rs,不在同一个作用域,修正方法如下
    import   java.io.*; 
    import   java.sql.*; 
    public   class   Test2 
    {   public   static   void   main(String[]   args) 
      { 
          String   driverName="sun.jdbc.odbc.JdbcOdbcDriver";     
          String   dbURL="jdbc:odbc:master"; 
          String   userName="sa"; 
          String   userPwd=""; 
          Connection   dbConn; 
          ResultSet   rs;
          try{ 
            Class.forName(driverName); 
            dbConn=DriverManager.getConnection(dbURL,userName,userPwd); 
            Statement   stmt=dbConn.createStatement(); 
            System.out.println("Connection   Successful!");   
            rs=stmt.executeQuery("SELECT   *   FROM   student"); 
            } 
            catch(Exception   e) 
              { 
                      e.printStackTrace(); 
              } 
              while(rs.next()) 
              { 
                      System.out.println(rs.getObject(1)+"-> "+rs.getObject(2));   
              } 
          } 
    }
      

  2.   

    这样也仅应付编译而已,你最终也的打扫Connection、Statement、ResultSet等,打扫的代码也得保证在相同作用域中,并且不会提前被垃圾回收
      

  3.   

    ResultSet rs=stmt.executeQuery("SELECT * FROM student");
    rs作用域范围限制了。在try{}代码块上面定义ResultSet rs = null;
    在try{}代码块内rs = stmt.executeQuery("SELECT * FROM student");
    这样都没有问题了。