【发布时间】:2016-01-05 08:18:43
【问题描述】:
我使用 MS Access .mdb 作为我的数据库。我不太明白这段代码,我从我的讲座中得到了它的副本。
几年前我使用了这段代码,它曾经可以工作,现在我遇到了一个错误,我不知道为什么。怎么了?
public class Connect {
public ResultSet rs;
Connection con;
java.sql.Statement st;
ResultSetMetaData rsm;
public Connect(){
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String url = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=Db.mdb";
con = DriverManager.getConnection(url,"","");
st = con.createStatement(1004,1008);
} catch (Exception e){
}
}
public ResultSet selectData(String query){
ResultSet rset;
try {
rs = st.executeQuery(query);
rsm = rs.getMetaData();
if(rs.next()){
return rs;
}else{
return null;
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
}
我在登录类中使用查询
if(con.selectData("select * from MsUser where Username='"+textUsername.getText()+"' and Password='"+textPassword.getText()+"'")==null){
JOptionPane.showMessageDialog(null, "Invalid username or password!", "Error", JOptionPane.ERROR_MESSAGE);
但它不起作用。
错误:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at Connect.selectData(Connect.java:27)
at Login.actionPerformed(Login.java:98)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
【问题讨论】:
-
你不知道如何解决 NullPointerException?首先,这个:catch (Exception e){ } 是非常糟糕的。你不是在避免崩溃,你只是在隐藏它们。其次,如果您提供的堆栈跟踪不足以让您找到问题所在(代码的第 27 行),那么您不应该尝试连接到数据库。先学基础