Java未使用Eclipse连接到MS Access数据库

Java未使用Eclipse连接到MS Access数据库,java,ms-access,jdbc,Java,Ms Access,Jdbc,有人能帮我吗?我已经试着解决这个问题一个小时了,但我仍然感到困惑。 下面是我的代码,我在编译时遇到了这个错误 输出消息:: DriverLoaded Could Not Connect to Databasejava.sql.SQLException: [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified at sun.jdbc.odbc.JdbcOdbc.c

有人能帮我吗?我已经试着解决这个问题一个小时了,但我仍然感到困惑。 下面是我的代码,我在编译时遇到了这个错误

输出消息::

DriverLoaded
Could Not Connect to Databasejava.sql.SQLException: [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified
    at sun.jdbc.odbc.JdbcOdbc.createSQLException(Unknown Source)
    at sun.jdbc.odbc.JdbcOdbc.standardError(Unknown Source)
    at sun.jdbc.odbc.JdbcOdbc.SQLDriverConnect(Unknown Source)
    at sun.jdbc.odbc.JdbcOdbcConnection.initialize(Unknown Source)
    at sun.jdbc.odbc.JdbcOdbcDriver.connect(Unknown Source)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at DBConnect.<init>(DBConnect.java:11)
    at DBConnect.main(DBConnect.java:21)
getConnection()的重载方法

(一)
getConnection(字符串url、属性信息)

网址- 形式为jdbc:subtocol:subname的数据库url

信息- 作为连接参数的任意字符串标记/值对的列表; 通常至少应包括“用户”和“密码”属性

(二)
getConnection(字符串url、字符串用户、字符串密码)

url-数据库url的形式为jdbc:subtocol:subname

用户- 正在代表其进行连接的数据库用户

密码- 用户的密码

3)
getConnection(字符串url)

url- 形式为jdbc:subtocol:subname的数据库url

考虑到您使用的是最后一个构造函数,您的url语法似乎不正确。我不熟悉MS Access,但我会提供一个在另一个答案中找到的建议

这是您的语法

"jdbc:odbc:; DRIVER = Microsoft Access Driver (*.mdb, *.accdb); DBQ = DB.accdb"
我发现一个正确的语法是

File f = new File("\\\\***\\***\\****\\***.accdb");

"jdbc:odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=" + f.getAbsolutePath();
看起来odbc后面有一个不必要的分号和一个额外的空格。也许你想试试上面的语法,看看会发生什么。我不确定文件部分,但如果在进行分号/空格修复后url仍然失败,您可能需要查看它

还可以查看此问题,以了解有关另一个选项的更多信息。
getConnection()的重载方法。

(一)
getConnection(字符串url、属性信息)

网址- 形式为jdbc:subtocol:subname的数据库url

信息- 作为连接参数的任意字符串标记/值对的列表; 通常至少应包括“用户”和“密码”属性

(二)
getConnection(字符串url、字符串用户、字符串密码)

url-数据库url的形式为jdbc:subtocol:subname

用户- 正在代表其进行连接的数据库用户

密码- 用户的密码

3)
getConnection(字符串url)

url- 形式为jdbc:subtocol:subname的数据库url

考虑到您使用的是最后一个构造函数,您的url语法似乎不正确。我不熟悉MS Access,但我会提供一个在另一个答案中找到的建议

这是您的语法

"jdbc:odbc:; DRIVER = Microsoft Access Driver (*.mdb, *.accdb); DBQ = DB.accdb"
我发现一个正确的语法是

File f = new File("\\\\***\\***\\****\\***.accdb");

"jdbc:odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=" + f.getAbsolutePath();
看起来odbc后面有一个不必要的分号和一个额外的空格。也许你想试试上面的语法,看看会发生什么。我不确定文件部分,但如果在进行分号/空格修复后url仍然失败,您可能需要查看它


还可以查看此问题以了解有关其他选项的更多信息

下面是解决问题的工作代码

import java.sql.*;

public class DBConnect {

    public DBConnect() {    
        try {
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
            System.out.println("DriverLoaded");
            String url = "jdbc:odbc:instance";
            Connection con = DriverManager.getConnection(url);
            System.out.println("Connection Established Successfully");
        } catch(Exception e) {
            e.printStackTrace();
            System.out.println("Could Not Connect to Database");
        }
    }

    public static void main (String args[]) {       
        DBConnect dbcon = new DBConnect();  
    }
}
应遵循的步骤:

  • 在windows xp系统的任何目录中创建access数据库DB.accdb
  • 打开开始>控制面板>性能和维护>管理工具>数据源(ODBC)>单击系统DSN选项卡>单击添加>选择Microsoft Access驱动程序(accdb,mdb)>指定名称:instance,(因为,getConnection(“jdbc:ODBC:instance”)并单击并浏览硬盘中的DB.accdb)按ok并重新启动命令提示符。然后再次运行代码

    在eclipse中运行相同的代码
  • 创建一个java项目

  • 添加一个主类并编辑该主类的源。只需复制和粘贴关于代码
  • 通过从jdk/bin目录添加jar文件来创建用户库
  • 通过链接userlibrary将生成路径链接到项目
  • 运行项目

  • 下面是您的问题的工作代码

    import java.sql.*;
    
    public class DBConnect {
    
        public DBConnect() {    
            try {
                Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
                System.out.println("DriverLoaded");
                String url = "jdbc:odbc:instance";
                Connection con = DriverManager.getConnection(url);
                System.out.println("Connection Established Successfully");
            } catch(Exception e) {
                e.printStackTrace();
                System.out.println("Could Not Connect to Database");
            }
        }
    
        public static void main (String args[]) {       
            DBConnect dbcon = new DBConnect();  
        }
    }
    
    应遵循的步骤:

  • 在windows xp系统的任何目录中创建access数据库DB.accdb
  • 打开开始>控制面板>性能和维护>管理工具>数据源(ODBC)>单击系统DSN选项卡>单击添加>选择Microsoft Access驱动程序(accdb,mdb)>指定名称:instance,(因为,getConnection(“jdbc:ODBC:instance”)并单击并浏览硬盘中的DB.accdb)按ok并重新启动命令提示符。然后再次运行代码

    在eclipse中运行相同的代码
  • 创建一个java项目

  • 添加一个主类并编辑该主类的源。只需复制和粘贴关于代码
  • 通过从jdk/bin目录添加jar文件来创建用户库
  • 通过链接userlibrary将生成路径链接到项目
  • 运行项目