无法连接到数据库错误:java.sql.sql异常:[Microsoft][ODBC Driver Manager]未找



我从Java连接到MS Access数据库(CDCollection.accdb)时出错。我们使用的IDE是Netbeans。我已经研究了这个错误的可能解决方案,但由于对这个话题缺乏经验,我不太确定如何解决。班上其他人都有同样的问题,老师也不知道如何解决这个问题。

我的课程现在是Funworks探索IT:Java编程的最后一章,学习第十单元:从Java程序访问数据库。11年级。

我会发布我发现最有用的三个来源的链接,但Stack Overflow说我需要有10个信誉点才能发布2个以上的链接 我已经搜索了Stack Overflow和web来找到这个错误的解决方案,但这些都比我目前的情况更先进。编辑:以下是链接,感谢那些支持我的人。他们建议的解决方案有意义,但似乎不起作用。。。

http://community.microfocus.com/borland/managetrack/starteam/w/knowledge_base/16933.error-java-sql-sqlexception-microsoft-odbc-driver-manager-data-source-name-not-found-and-no-default-driver-specified.aspx

http://www.coderanch.com/t/440574/JDBC/databases/java-sql-SQLException-ODBC-Driver

http://www.codeproject.com/Articles/35018/Access-MS-Access-Databases-from-Java

据我所知,这是因为学校的电脑和我的笔记本电脑都是64位的,ODBC(开放数据库连接)是32位的。我的老师不知道如何解决这个问题,因为这是她第一次遇到这个问题。去年11年级时,学校的电脑还是32位的。

根据我所读到的内容,我需要转到OBDC数据源管理员,并在系统DSN选项卡下添加"Microsoft Access Driver(*.mdb,*.accdb)"。我注意到它已经在User DSN选项卡下了。在C:\Windows\SysWOW64\odbcad32.exe控制面板\系统和安全\管理工具\数据源(ODBC)中查找OBDC数据源管理员。第一个更可取,因为它似乎有更多的驱动程序可用,即使控制面板快捷方式的目标是相同的可执行文件。

然而,一旦我添加了驱动程序,我仍然会遇到同样的错误。

这是我的代码:

DB类

package cd;
import java.sql.*;
public class DB
{
    private static final String driver = "sun.jdbc.odbc.JdbcOdbcDriver";
    private static final String url = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ={CDCollection.accdb}";
    private Connection connection;
    private PreparedStatement statement;
    private ResultSet resultSet;
    public DB()
    {
        try
        {
            Class.forName(driver);
            System.out.println("Driver successfully loaded");
        }
        catch (ClassNotFoundException c)
        {
            System.out.println("Unable to load driver");
            System.out.println(c);
        }
        try
        {
            connection = DriverManager.getConnection(url);
            System.out.println("Connection successful");
        }
        catch (SQLException e)
        {
            System.out.println("Unable to connect");
            System.out.println(e);
        }
    }
}

以及UseDB类:

package cd;
import java.sql.*;
public class UseDB
{
    static DB db = new DB();
    public static void main(String[] args)
    {
    }
}

对于

DBQ={CDCollection.accdb}

我已经尝试了文件的完整路径(C:\Users\\Documents\IT\Java\Databases\CD\CDCollection.accdb),由于第一个标记了转义符,所以使用了双反斜杠。我也尝试过使用正斜杠(/),也尝试过不使用路径(如代码中所示),并将数据库放置在\CD\src(项目文件夹)、\CD\src(源文件夹)和/CD\src\CD中(包文件夹)。

然而,尽管如此,我和我的同学们在运行程序的每一次都会得到相同的输出:

run:
Driver successfully loaded
Unable to connect
java.sql.SQLException: [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified
BUILD SUCCESSFUL (total time: 0 seconds)

我能帮忙吗?请记住,我的课今天才刚刚开始这个模块;我们只做了1个月的Access和SQL,已经做了一年半的Java。

谢谢!

我建议您在ODBC配置面板中添加一个SYSTEM DATASOURCE。假设您将其命名为cdcollection。那么你的url变量只需要是:

private static final String url = "jdbc:odbc:cdcollection";

这里有一篇关于如何做到这一点的好文章。

欢迎使用StackOverflow。

最新更新