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

时间:2013-11-20 02:02:13

标签: java ms-access jdbc

任何人都可以帮助我吗?我已经尝试解决这个问题一小时了,我仍然感到困惑。 下面是我的代码,我在编译时遇到了这个错误。

输出msg ::

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

2 个答案:

答案 0 :(得分:5)

getConnection()

的重载方法

1)      getConnection( String url, Properties info )

  

网址 -          一个jdbc:subprotocol:subname

形式的数据库URL      

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

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

  

url - jdbc:subprotocol:subname

形式的数据库URL      

用户 -       代表Connection进行连接的数据库用户

     

密码 -       用户的密码

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

的详情,请查看此问题

答案 1 :(得分:1)

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

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. open start&gt; controlpanel&gt;表现和维护&gt;管理工具&gt;数据源(ODBC)&gt;单击“系统DSN”选项卡&gt;点击添加&gt;选择Microsoft Access驱动程序(accdb,mdb)&gt;给出名称:instance,(因为,getConnection(“jdbc:odbc:instance”)并单击并浏览位于硬盘中的DB.accdb)按确定并重新启动命令提示符。并再次运行代码。

    在eclipse中运行相同的代码

  3. 创建一个java项目。

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