从 java 连接到 MS 访问
Posted
技术标签:
【中文标题】从 java 连接到 MS 访问【英文标题】:connect to MS access from java 【发布时间】:2011-11-15 21:01:12 【问题描述】:当我编写连接代码时,我尝试使用 jdbc-odbc 桥将我的 java 程序连接到 Access DB,抛出此异常,我无法解决问题
java.sql.SQLException: [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified
at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6957)
at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7114)
at sun.jdbc.odbc.JdbcOdbc.SQLDriverConnect(JdbcOdbc.java:3073)
at sun.jdbc.odbc.JdbcOdbcConnection.initialize(JdbcOdbcConnection.java:323)
at sun.jdbc.odbc.JdbcOdbcDriver.connect(JdbcOdbcDriver.java:174)
at java.sql.DriverManager.getConnection(DriverManager.java:582)
at java.sql.DriverManager.getConnection(DriverManager.java:207)
at jdbc.TestAccesDBCon.getConnection(TestAccesDBCon.java:44)
at jdbc.TestAccesDBCon.main(TestAccesDBCon.java:21)
这是我的代码:
public static void main(String[] args) throws Exception
Connection conn = getConnection();
Statement st = conn.createStatement();
st = conn.createStatement();
ResultSet rs = st.executeQuery("SELECT * FROM users");
ResultSetMetaData rsMetaData = rs.getMetaData();
int numberOfColumns = rsMetaData.getColumnCount();
System.out.println("resultSet MetaData column Count=" + numberOfColumns);
st.close();
conn.close();
private static Connection getConnection() throws Exception
String driver = "sun.jdbc.odbc.JdbcOdbcDriver";
String connectionString = "jdbc:odbc:Driver= " +
"Microsoft Access Driver (*.accdb);DBQ=TestDB.accdb;DriverID=01";
Class.forName(driver);
return DriverManager.getConnection(connectionString);
为什么会抛出这个异常?请帮忙?
【问题讨论】:
发布生成异常的堆栈跟踪。 线程“main”java.sql.SQLException 中的异常:[Microsoft][ODBC Driver Manager] 未找到数据源名称且未指定默认驱动程序 你的数据库在哪个目录?您可能想尝试指定整个事情 与***.com/questions/6225300/…相关 @dann.dev,在我的 java 项目的根目录中 【参考方案1】:您似乎没有安装 ODBC Access 驱动程序(安装 Access 时,ODBC 驱动程序是可选的!),尝试从 Access 安装介质安装驱动程序,如果您在 64 位系统上,则应安装 64 位驱动程序的版本。
如果您在控制面板下的管理工具中进入 ODBC 管理器 GUI,将无法在源选项卡下找到源:
Microsoft Access Driver (*.accdb)
这意味着您的系统上没有安装驱动程序,您需要安装它。
您可以从here 下载Access 2010 驱动程序。
【讨论】:
可能是,但是如何安装,请帮忙 从访问安装媒体(通常是光盘)或从这里下载它们:microsoft.com/download/en/details.aspx?id=13255 从数据源 (ODBC ),在用户 DSN 中找到 Microsoft Access Driver (.mdb,.accdb),但在系统 DSN 中未找到,当我尝试从用户DSN配置它,出现错误消息说找不到驱动程序,但是如何安装驱动程序? 查看我发布的 Microsoft 下载页面的链接。 它现在可以了,但是我应该写db的完整路径,即使它在我的java项目的目录中,为什么?【参考方案2】:你可以试试这段代码
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String DBpath = "Your Database Path";
String driver = "jdbc:odbc:Driver=Microsoft Access Driver (*.accdb);DBQ=";
driver += DBpath.trim() + ";DriverID=22;READONLY=true";
Connection con = DriverManager.getConnection(driver, "", "");
Statement s = con.createStatement();
con = DriverManager.getConnection(driver, "", "");
return (Statement) s;
【讨论】:
它无需编写此“;DriverID=22;READONLY=true:”即可工作,除了安装 MS 访问驱动程序和添加 db 的完整路径外,我的代码中没有任何更改。我想知道为什么我要写db的完整路径,即使它在java项目目录中?以上是关于从 java 连接到 MS 访问的主要内容,如果未能解决你的问题,请参考以下文章
无法从 Java WebService 连接到 MS Access 数据库
使用 Java 从 Oracle 服务器连接到 MS SQL Server