我从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。