我是 Java 的新手,基本上我的问题是 - 如何将MS访问链接到 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();
答案 0 :(得分:0)
黄线表示the catch java.lang.exception is too broad
。
Exception类是IO和Runtime Exceptions的超类。因为你可以使用它的子类或继续使用它。由你决定。
文档Here
connect()提示说:构造函数中的可覆盖方法调用
这可能会造成麻烦。调用该方法时,该对象的状态可能不一致。请参阅Here
您为new Student1();
获得了黄线,因为您创建了一个实例但未将其存储在任何位置。
这样的事情可以解决问题。
Student1 n = new Student1();
答案 1 :(得分:0)
导致错误的原因是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();
这将输出calling NewStudent.connect()