java.lang.ClassNotFoundException:sun.jdbc.odbc

java.lang.ClassNotFoundException:sun.jdbc.odbc

我创建了一个MSAccess数据库,并给它分配了一个DSN。我想通过我的Java应用程序访问它。

这就是我要做的:

public class AccessDbConnection {

    public static void main(String[] args) {
        System.out.println("**ACCESS DB CONNECTION**");

        try {
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); // for MS Access ... MS access driver loading

            String     conURL    = "jdbc:odbc:sampleDNS";
            Connection con       = DriverManager.getConnection(conURL);
            Statement  statement = con.createStatement();
            String     qry       = "SELECT * FROM Table1";
            ResultSet  rs        = statement.executeQuery(qry);

            while(rs.next()) {
                String id    = rs.getString("ID") ;
                String fname = rs.getString("First_Name");
                String lname = rs.getString("Last_Name");
                System.out.println(id + fname + lname);
            }
        } catch (ClassNotFoundException ex) {
            System.out.println("Classforname Exception!!");
            Logger.getLogger(AccessDbConnection.class.getName()).log(Level.SEVERE, null, ex);
        } catch (SQLException ex) {
            System.out.println("DriverManager Exception!!");
            Logger.getLogger(AccessDbConnection.class.getName()).log(Level.SEVERE, null, ex);
        }
    }}

在try块的第一行,我得到了异常。那是class.forname("..");..为什么我有这个例外?


慕容3067478
浏览 1903回答 3
3回答

子衿沉夜

对于Java 7,您可以简单地省略Class.forName()语句,因为它并不是真正需要的。对于Java 8,您不能使用JDBC-ODBC桥,因为它已经被删除。您将需要使用类似于UCanAccess相反。有关更多信息,请参见在没有ODBC的情况下从Java操作Access数据库

炎炎设计

在JDK 8中,JDBCODBC桥不再使用,因此从JDK中删除。要在Java中使用MicrosoftAccess数据库,需要5个额外的JAR库。1-hsqldb.jar2-累积2.0.4.jar3-公-朗-2.6.jar4-共用-日志-1.1.1.jar5-ucanaccess-2.0.8.jar将这些库添加到您的java项目中,并从以下几行开始。Connection&nbsp;conn=DriverManager.getConnection("jdbc:ucanaccess://<Path&nbsp;to&nbsp;your&nbsp;database&nbsp;i.e.&nbsp;MS&nbsp;Access&nbsp;DB>");Statement&nbsp;s&nbsp;=&nbsp;conn.createStatement();路径可以类似于E:/Project/Java/DBApp然后执行你的查询。喜欢ResultSet&nbsp;rs&nbsp;=&nbsp;s.executeQuery("SELECT&nbsp;*&nbsp;FROM&nbsp;Course");while(rs.next()) &nbsp;&nbsp;&nbsp;&nbsp;System.out.println(rs.getString("Title")&nbsp;+&nbsp;"&nbsp;"&nbsp;+&nbsp;rs.getString("Code")&nbsp;+&nbsp;"&nbsp;"&nbsp;+&nbsp;rs.getString("Credits"));将使用的某些进口品。尝试捕捉块必须使用和一些必要的东西,不要忘记。记住,不需要像JDBC、ODBC之类的桥接驱动程序。

LEATH

设置:My&nbsp;OS&nbsp;windows&nbsp;8&nbsp;64bitEclipse&nbsp;version&nbsp;Standard/SDK&nbsp;Kepler&nbsp;Service&nbsp;Release&nbsp;2My&nbsp;JDK&nbsp;is&nbsp;jdk-8u5-windows-i586My&nbsp;JRE&nbsp;is&nbsp;jre-8u5-windows-i586这就是我克服错误的方法。在第一次我Class.forName("sun.jdbc.odbc.JdbcOdbcDriver")也没用。然后我登录到这个网站并下载了UCanAccess2.0.8zip(正如戈德·汤普森所说)文件,并将其解压缩。然后,您还可以在解压缩文件夹中找到这些*.jar文件:ucanaccess-2.0.8.jarcommons-lang-2.6.jar commons-logging-1.1.1.jarhsqldb.jar jackcess-2.0.4.jar然后,我复制了所有这5个文件,并将它们粘贴到以下两个位置:C:\Program&nbsp;Files&nbsp;(x86)\eclipse\lib C:\Program&nbsp;Files&nbsp;(x86)\eclipse\lib\ext(我做了一件有趣的事情,因为我无法将这些库导入到我的项目中)然后用我的项目重新打开Eclipse,然后在我的项目的JRE系统库文件夹中看到所有的*.jar文件。最后我的代码起作用了。public&nbsp;static&nbsp;void&nbsp;main(String[]&nbsp;args)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;try &nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Connection&nbsp;conn=DriverManager.getConnection("jdbc:ucanaccess://C:\\Users\\Hasith\\Documents\\JavaDatabase1.mdb"); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Statement&nbsp;stment&nbsp;=&nbsp;conn.createStatement(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;qry&nbsp;=&nbsp;"SELECT&nbsp;*&nbsp;FROM&nbsp;Table1"; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ResultSet&nbsp;rs&nbsp;=&nbsp;stment.executeQuery(qry); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while(rs.next()) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;id&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;rs.getString("ID")&nbsp;; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;fname&nbsp;=&nbsp;rs.getString("Nama"); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(id&nbsp;+&nbsp;fname); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;catch(Exception&nbsp;err) &nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(err); &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;//System.out.println("Hasith&nbsp;Sithila");}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java