Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java编程帮助?!(Netbeans)_Java_Netbeans_Jdbc - Fatal编程技术网

Java编程帮助?!(Netbeans)

Java编程帮助?!(Netbeans),java,netbeans,jdbc,Java,Netbeans,Jdbc,我是Java的新手,基本上我的问题是-如何将MS access链接到NetBeans,我已经尝试了所有方法,但似乎没有任何效果 public Student1 (){ connect (); } public void connect () { try{ String driver = "sun.jdbc.odbc.JdbcOdbcDriver"; Class.forName(driver); String Student

我是Java的新手,基本上我的问题是-如何将MS access链接到NetBeans,我已经尝试了所有方法,但似乎没有任何效果

public Student1 (){


   connect ();
}

public void connect () {

    try{

        String driver = "sun.jdbc.odbc.JdbcOdbcDriver";
        Class.forName(driver);

        String Student1 = "jdbc:odbc:Database1";
        con = DriverManager.getConnection(Student1);
        st = con.createStatement();
        String sql = "select * from Student1";
        rs = st.executeQuery(sql);

        while (rs.next())
        {
            String fname = rs.getString("First Name");
            String lname = rs.getString("Last Name");
            String dob = rs.getString("DOB");
            String studentid = rs.getString("StudentID");
            String mobileno = rs.getString("MobileNo");
            String address = rs.getString("Address");
            String email = rs.getString("Email");


            System.out.println(fname + " "+lname+" "+dob+" "+studentid+" "+mobileno+" "+address+" "+email);

        }

    }catch (Exception ex){

    }

}

/**
 * @param args the command line arguments
 */
public static void main(String[] args) {
    // TODO code application logic here
new Student1();
}
}

我得到一条黄线:

connect ();
catch (Exception ex)
new Student1();

黄线表示,
catch java.lang.exception太宽了

Exception类是IO和运行时异常的超类。在这里,您可以使用它的子类,也可以继续使用它。这取决于你

医生

connect()提示是:构造函数中的可重写方法调用

这可能会引起麻烦。调用该方法时,对象的状态可能不一致。请参阅

你得到了新学生1()的黄线因为您创建了一个实例,但尚未将其存储在任何位置

这样的事情可以解决问题

Student1 n = new Student1();

导致此错误的原因是
Student1
类的构造函数正在调用同一类中的可重写方法
connect()

这种做法不好的原因是,如果有人将
Student1
子类化并重写
connect()
,那么他们也会直接更改
Student1
的父类构造函数的行为。这是封装的中断

示例:

public class NewStudent extends Student1 {
    // constructor, etc...

    @Override
    public void connect() {
        // do something new here
        System.out.println("calling NewStudent.connect()");
    }
}

NewStudent student = new NewStudent();

这将输出调用NewStudent.connect()

,如果您将鼠标悬停在这一行上,NetBeans将提示您出了什么问题。这是什么提示?如果在
catch()
中添加一些日志记录,您可能能够诊断错误。在catch块中使用
Exception\printStackTrace()
方法!!它会告诉你reason@Tichodromaconnect()上的提示是:构造函数中的可重写方法调用,catch(Exception ex)上的提示是:catch(Java.lang.Exception)太过复杂,它捕获以下异常类型:Java.lang.clasNotFound Eeption和Java.sql.SQLException,new Student1()是;新实例(已忽略)与介绍一起介绍一个有用的提示您可以看到此答案,其中描述了如何连接到ms sql server,因此它可能会为您提供一些额外的想法,让您了解如何根据您的情况调整此提示