繁体   English   中英

如何使用Java连接Access数据库

[英]How to connect my Access Database using Java

我有以下代码

import java.sql.*;
public class UserLogin {
    public static void main(String[] args) {
        try {
            // Load MS accces driver class
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

            // C:\\databaseFileName.accdb" - location of your database 
            String url = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb,    *.accdb)};DBQ=" + "C:\\AGENDAS\\Agenda.accdb";

            // specify url, username, pasword - make sure these are valid 
            Connection conn = DriverManager.getConnection(url, "Java2016", "Java2016");

            System.out.println("Connection Succesfull");
        } catch (Exception e) {
            System.err.println("Got an exception! ");
            System.err.println(e.getMessage());

        }
    }
}

并引发下一个错误

有一个例外!

 sun.jdbc.odbc.JdbcOdbcDriver 

如何建立连接?

如果您已经在使用JDK8,我想您得到的异常是“找不到类”异常。 但是由于您没有发布完整的堆栈跟踪信息,因此不确定-但是,输出中的类名称是该方向上的强指针。

请检查您初始化JDBC URL的来源,我对此很感兴趣。 在驱动程序文档中,未列出此样式:

9.3.5网桥支持哪些JDBC URL? 桥驱动程序使用odbc子协议。 该子协议的URL的格式为:

 jdbc:odbc:<data-source-name>[<attribute-name>=<attribute-value>]* 

例如:

 jdbc:odbc:sybase jdbc:odbc:mydb;UID=me;PWD=secret jdbc:odbc:ora123;Cachesize=300 

http://download.oracle.com/otn_hosted_doc/jdeveloper/904preview/jdk14doc/docs/guide/jdbc/getstart/bridge.doc.html

此外,这是我在ODBC驱动程序状态上发现的。

JDBC-ODBC桥的状态

JDBC-ODBC桥应被视为过渡解决方案。 它将在JDK 8中删除。

http://docs.oracle.com/javase/7/docs/technotes/guides/jdbc/bridge.html

由于您当前正在启动项目,因此最好不要使用JDBC-ODBC桥。 而是使用JDK8并找到涉及SQL.Server Express Edition的解决方案...

由于您正在使用Access,因此我建议您使用UCanAccess ,它是一种开放源Java JDBC驱动程序实现,该实现允许Java开发人员和jdbc客户端程序读取/写入Microsoft Access数据库( .mdb.accdb文件)。 我认为它比传统的JDBC-ODBC桥更简单并且具有更多的支持。

下载UCanAccess驱动程序后,可以通过以下方法建立连接:

    private Connection con ;

    private Statement stmt;


    public void connect ( String path ){

        try {
            Class.forName("net.ucanaccess.jdbc.UcanaccessDriver");

            this.con = DriverManager.getConnection(path, "", "");

            this.stmt = con.createStatement();

        } catch (SQLException ex) {
            System.err.println("SQLException: " + ex.getMessage());
        } 
        catch (ClassNotFoundException e) {

            System.err.println("classnotfoundException: " + e.getMessage());


        }
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM