【问题标题】:Java not connecting to MS Access database using EclipseJava 未使用 Eclipse 连接到 MS Access 数据库
【发布时间】:2013-11-20 02:02:12
【问题描述】:

谁能帮帮我?我已经尝试解决这个问题一小时,但我仍然感到困惑。 以下是我的代码,编译时出现此错误。

输出消息::

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)

代码::

import java.sql.*;

public class DBConnect {

    public DBConnect() {    
        try {
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
            System.out.println("DriverLoaded");
            String url = "jdbc:odbc:; DRIVER = Microsoft Access Driver (*.mdb, *.accdb); DBQ = DB.accdb";
            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();  
    }
}

【问题讨论】:

    标签: java ms-access jdbc


    【解决方案1】:

    getConnection() 的重载方法

    1) getConnection( String url, Properties info )

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

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

    2) getConnection( String url, String user, String password )

    url - jdbc:subprotocol:subname 形式的数据库 url

    用户 - 代表其建立连接的数据库用户

    密码 - 用户密码

    3) getConnection( String url )

    网址 - jdbc:subprotocol: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 之后有一个不必要的分号和一个额外的空格。也许你想试试上面的语法,看看会发生什么。我不确定文件部分,但如果您的网址在修复分号/空格后仍然失败,您可能需要查看它。

    请查看此问题以获取有关另一个选项 Connection with username and password 的更多信息

    【讨论】:

      【解决方案2】:

      以下是您的问题的工作代码...

      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();  
          }
      }
      

      要遵循的步骤:

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

        在eclipse中运行同样的代码

      3. 创建一个 java 项目。

      4. 添加一个主类并编辑这个主类的源代码。只需复制并粘贴 about 代码即可。
      5. 通过添加 jdk/bin 目录中的 jar 文件来创建用户库。
      6. 通过链接用户库将构建路径链接到项目。
      7. 运行项目。

      【讨论】: