下面是我的处理用户类,里面有一个private属性ConnDB类(此类有带参数的构造方法),用来得到数据库连接package dao;
import java.sql.*;public class UserOpera {
private Connection c;
private Statement s;
private ResultSet rs;
private ConnDB con;

}
上面的代码编译正常,奇怪的事情出现在下面:package dao;
import java.sql.*;public class UserOpera {
private Connection c;
private Statement s;
private ResultSet rs;
private ConnDB con;

con=new ConnDB("oracle.jdbc.driver.OracleDriver","jdbc:oracle:thin:@localhost:1521:sid1","hr","hr");
}
我new ConnDB后在private ConnDB con; 这一行报错了,信息为:Syntax error on taken ";",,expected
求解!!!

解决方案 »

  1.   

    哪知道你的 ConnDB 类怎么写的。
      

  2.   

    下面是ConnDB类package dao;
    import java.sql.*;public class ConnDB {
    private String drivername;
    private String str;
    private String user;
    private String passwd;
    private Connection c;

    public ConnDB(String drivername,String str,String user,String passwd){
    this.drivername=drivername;
    this.str=str;
    this.user=user;
    this.passwd=passwd;
    }

    public Connection getConnection(){
    try {
    Class.forName(drivername);
    c=DriverManager.getConnection(str,user,passwd);
    } catch (ClassNotFoundException e) {
    e.printStackTrace();
    } catch (SQLException e) {
    e.printStackTrace();
    }
    return c;

    }
    }
      

  3.   

    private ConnDB con=new ConnDB("oracle.jdbc.driver.OracleDriver","jdbc:oracle:thin:@localhost:1521:sid1","hr","hr");
    上面这样倒是不报错误了,但是用con这个对象的时候编译器不认了!
      

  4.   


    把这句放在static {}里或构造函数UserOpera(){}里边
    con=new ConnDB("oracle.jdbc.driver.OracleDriver","jdbc:oracle:thin:@localhost:1521:sid1","hr","hr");
      

  5.   


    public class UserOpera {
        private Connection c;
        private Statement s;
        private ResultSet rs;
       
        /*
        static {
    ConnDB con = new ConnDB("oracle.jdbc.driver.OracleDriver","jdbc:oracle:thin:@localhost:1521:sid1","hr","hr");
        }
        */
        ConnDB con;
        public UserOpera() {
    con = new ConnDB("oracle.jdbc.driver.OracleDriver","jdbc:oracle:thin:@localhost:1521:sid1","hr","hr");
        
        }
     }
      

  6.   

    我想问问:你经常做这样的初始化吗?你怎么不在构造器里进行初始化呢?还有你的jdbc有开,有关闭吗?
      

  7.   

    哎!!全是我的错,谢谢大家了!原因很容易让人忽略!我没有把con=new ConnDB()...这段代码放到一个方法体内部!一个类只能由属性和方法组正,我却在类内直接写了一段代码而没有包含在方法内,因此造成一种错觉,以为代码是没问题的,其实犯了大忌!