在连接数据库的类中有这样一条语句:
       
          rs=stat.executeQuery(sql);//执行查询      为什么会提示错误can't find symbol 

解决方案 »

  1.   

        而且这一条语句也是显示同样的错误:
                      count=stat.executeUpdate(sql);//执行更新
            提示找不到executeUpdate方法~~~~~~~~~~
      

  2.   

    你确定导入了sql类库?
    import java.sql.*;
      

  3.   


    cannot find symbol
      symbol:   method executeQuery(java.lang.String)
      location: variable stat of type java.beans.Statement我的源程序是这样的,照书一个字一个字打的,不能有什么错误的:package sheji;import java.awt.Image;
    import java.beans.Statement;
    import java.io.File;
    import java.io.FileInputStream;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.util.Vector;
    import javax.swing.ImageIcon;public class DataBase {    Connection con=null;//声明Connection引用
        Statement stat;//声明语句
        ResultSet rs;//声明结果集
        int count;//用于记录更新记录数    public DataBase(){
            try{
                Class.forName("org.gjt.mm.mysql.Driver");//加载Mysql的驱动类
                con=DriverManager.getConnection("jdbc:mysql://localhost:3306/test","root","");//创建连接
                stat=(Statement) con.createStatement();//创建Statement对象
            }
            catch(Exception e){e.printStackTrace();}//捕获异常并打印出来
        }    //数据库操作方法
        public void selectDb(String sql){      //声明Select方法
            try{    //对SQL语句进行转码
                sql=new String(sql.getBytes(),"ISO-8859-1");//将Java默认编码转为ISO-8859-1
                rs=stat.executeQuery(sql);//执行查询
            }
            catch(Exception ei){ei.printStackTrace();} //打印异常
        }
        
        public int updateDb(String sql){  //声明updata方法
            try{                           //对SQL语句进行转码
            sql=new String(sql.getBytes(),"ISO-8859-1");//将默认编码转为ISO-8859-1
            count=stat.executeUpdate(sql);//执行更新
        }
            catch(Exception ei){ei.printStackTrace();}//打印异常
              return count;  //反回参数
        }
        
        public void dbClose(){       //声明close方法
            try{con.close();}         //执行数据库关闭动作
            catch(Exception e){e.printStackTrace();} //打印异常
        }
        
        public int updatePic(String path,int eid){
             try{          //创建预编译语句实现将图片存进数据库的功能
                 PreparedStatement ps=con.prepareStatement("update Person set Photo=? where EmplyeeID="+eid);
                              //创建预编译语句
                 File f=new File(path);//创建一个文件对象
                 int length=(int)f.length();//获取图片的长度
                 byte[] b=new byte[length];//创建byte数组,其长度为图片文件的长度
                 FileInputStream fin=new FileInputStream(f);//创建文字型字节流对象,并为其指定源文件
                 fin.read(b);
                 fin.close();
                 ps.setBytes(1,b);
                 ps.execute();
                 ps.close();
             }
             catch(Exception ei){ei.printStackTrace();}
             return count;
        }
        
        public Vector<String[]> getPerson()
        {
            //对员工信息进行搜索
            Vector<String[]> vtemp= new Vector<String[]>();
            String sql= "select EmployeeID,Name,Sex,Date,City,Nation,Polity,"+
                        "Culture,Marriage,Graduate,Spec,Speci,Wtype,Duty,Depart,"+
                         "IDcard,Address,Postcode,HomePhone,Mobile,Email From Person";
            try{
                    rs=stat.executeQuery(sql);
                    while(rs.next()){
                        String[] str=new String[21];
                        for(int i=0;i<str.length;i++)
                        { str[i]=rs.getString(i+1);
                        str[i]=new String(str[i].getBytes("ISO-8859-1"),"gb2312");
                        }
                    vtemp.add(str);}
            
            }  catch(Exception e){e.printStackTrace();}
            return vtemp;
            
        }
        
        public Vector<Image> getRecord(){
                Vector<Image> image=new Vector<Image>();
                try{
                    String sql="select Photo from Person";
                    rs=stat.executeQuery(sql);
                    while(rs.next()){
                        byte[] buff=rs.getBytes(1);
                    if(buff!=null)
                    {
                        image.add((new ImageIcon(buff)).getImage());
                    }
                    else{
                            image.add(new ImageIcon("ico.gif").getImage());
                    }}
                }
             catch(Exception e){e.printStackTrace();}
                return image;
        }
        
        public Vector<String[]> getMessage()
        {
            Vector<String[]> v=new Vector<String[]>();
            String sql = "selcet * from Attend";
            try{
                rs=stat.executeQuery(sql);
                while(rs.next()){
                    String[] str = new String[8];
            for(int i=0;i<str.length;i++)
            {
                str[i]= rs.getString(i+1);
                str[i]= new String(str[i].getBytes("ISO-8859-1"),"gb2312");
            }
            v.add(str);
            }
            }
            catch(Exception eo){eo.printStackTrace();}
            return v;
                    
        }    
        
        public Vector<String[]> getWage(){
            Vector<String[]> vv=new Vector<String[]>();
            String sql = "select * from Wage";
            try{
                rs=stat.executeQuery(sql);
                while(rs.next()){
                    String[] str= new String[10];
                    for(int i=0;i<str.length;i++)
                    {   
                        str[i]=rs.getString(i+1);
                        str[i] = new String(str[i].getBytes("ISO-8859-1"),"gb2312");
                    }
                    vv.add(str);
                }
            }catch(Exception eov){eov.printStackTrace();}
            return vv;
        }
        /* ++++++++++++*/}
      

  4.   

    看了一下有一下两个地方要注意:
    1、引错了包:statement应该是java.sql.statement,你引的是java.beans.Statement;所以调用那两个方法时会错,你重新引包看又没有错。
    2、我们一般使用PreparedStatement,这个的用法和statement差不多,但是从安全性的角度讲我们一般都用PreparedStatement,不推荐使用statement。
      

  5.   

    不知道我说的对不对,但是我觉得有两个地方还需要说一下:
    1、记得关闭链接:你用的是mysql数据库,端口号是3306,但是在你的程序中没有看到关闭connection的语句,一个connection就是和数据库的一次链接,对于一个数据库连接数是有限的,一般在我们执行完增加、删除、修改、或是删除操作的时候都要及时关闭,如果不及时关闭的话你的程序运行一段时间之后就会崩溃了,也就是说你在用cmd进入命令提示符以后输入netstat -an会看到很多个3306在使用.......
      

  6.   


    嗯,重新引包之后就正确了,另外还有两个问题不太懂(都不是错误):
      1:import java.util.Vector;  这句话提示集合已经过时,不知道是什么意思,
      2: catch(Exception ei){ei.printStackTrace();}  提示打印栈跟踪,需要删除ei.printStackTrace().    改完结果变成了   catch(Exception ei){}
      

  7.   

    1、Vector过时,可能是你的jdk版本比较高哈,但是1.6以前的版本都可以用的,这个倒没有什么,换一个集合就可以了,比如HashMap,ArrayList等等...。
    2、try{ //最好把可能出现异常的语句写在try语句里面,像对数据库操作之类的,特别是多表,出现异可以 回滚
       int k=0;
       k=9/0;//这句会报出异常,所以下面这个不会执行,会直接执行catch里面的语句..
        System.out.println("这句不会执行");
      } catch(Exception e){//Exception是异常类的父类,所以上面的数学异常也是属于Exception的一种
        e.printStackTrace();//这句话是就把上面出错的信息打印出来了
      }
      

  8.   

    你确定k=9/0 这句话会抛出异常吗?你再试试看,用最新的jdk