无法连接到数据库错误:java.sql.SQLException:[Microsoft] [ODBC驱动程序管理器]未找到数据源名称且未指定默认驱动程序

时间:2014-09-18 12:39:22

标签: java sql windows netbeans

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

我的课程现在在最后一章,学习单元10:从Java程序访问数据库,Funworks正在探索IT: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驱动程序(*) .mdb,* .accdb)“。我注意到它已经存在于用户DSN 标签下。 在 C:\ Windows \ SysWOW64 \ odbcad32.exe 控制面板\系统和安全\管理工具\数据源(ODBC)中找到 OBDC数据源管理员 。第一个是可取的,因为它似乎有更多的驱动程序可用,即使控制面板快捷方式针对相同的可执行文件。

但是,添加驱动程序后仍然会出现相同的错误。

这是我的代码:

数据库类

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 (项目文件夹)中, \ 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。

谢谢!

1 个答案:

答案 0 :(得分:0)

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

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

Here's a a nice STEP BY STEP article关于如何做到这一点。

欢迎使用StackOverflow。