【问题标题】:Java - cannont connect database mdbJava - 无法连接数据库 mdb
【发布时间】: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 行),那么您不应该尝试连接到数据库。先学基础

标签: java eclipse


【解决方案1】:

请确保“MsUser”表存在。 您是否从 'Connect' 类实例化 'con' 来调用 con.selectData() 方法?

我认为你错过了实例化任何对象。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-09
    • 1970-01-01
    • 1970-01-01
    • 2021-06-27
    • 2013-10-20
    • 2017-01-20
    • 1970-01-01
    相关资源
    最近更新 更多