1、新建数据库:
在Access中新建数据库reckon.accdb(我本地的Access是2007的,2003的拓展名为mdb),存放在D盘Access目录下。
2、安装Access驱动程序:
从“开始——>控制面板——>系统和安全——>管理工具——>数据源(ODBC)——>系统驱动”中查看是否安装Access的ODBC驱动程序。若不存在则需要安装Microsoft Access驱动程序。
官方:http://www.microsoft.com/zh-cn/download/confirmation.aspx?id=13255
32位:http://download.microsoft.com/download/E/4/2/E4220252-5FAE-4F0A-B1B9-0B48B5FBCCF9/AccessDatabaseEngine.exe
64位:http://download.microsoft.com/download/E/4/2/E4220252-5FAE-4F0A-B1B9-0B48B5FBCCF9/AccessDatabaseEngine_X64.exe
有时候系统中明明安装了Access驱动程序,但是依旧显示未安装,就像我本地一样:
我已经安装了Access,但是这里显示的只有SQL Server的两个驱动。原因我不知道,我只知道怎么可以看到完全的。打开“C:\Windows\SysWOW64”文件夹,找到odbcad32.exe执行程序,“以管理员身份运行”,然后就会看到一大堆驱动程序,Access驱动程序也在里边:
(注意:在从文件夹打开之前,记得关闭以前的ODBC数据源管理器,否则显示的还是以前那个)。
3、配置ODBC数据源:
第一步,在“ODBC数据源管理器”中切到“系统DSN”选项卡,点击右侧的“添加”按钮,在弹出的“创建新数据源”框中选择“Microsoft Access Driver(*.mdb,*.accdb)”,这个驱动可以兼容mdb和accdb文件,所以选这个,选完了点击“完成”。
第二步,在“ODBC Microsoft Access 安装”对话框中设置数据源名称并选择数据库。
数据源名称:随便填,但是最后有意义,我这里是reckon
说明:可以不填
数据库:点击“选择”按钮,在弹出框中,定位到D盘Access目录,此时左侧会显示选定目录下的Access数据库文件,如如。选定reckon.accdb数据库,点击确定。
第三步,返回到“系统DSN”选项卡,“系统数据源”里多出了我刚刚添加的reckon数据源。
4、使用Java代码链接Access数据库:
package com.wjl.test; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.util.Properties; public class DBConnection { static Connection connect = null; static PreparedStatement stmt = null; static ResultSet rs = null; /** * 该方法用来连接数据库 * @param db:数据源名称 * */ private DBConnection(String db){ try{ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");//注册驱动 //Access中的数据库默认编码为GBK,本地项目为UTF-8,若不转码会出现乱码 Properties p = new Properties(); p.put("charSet", "GBK"); connect = DriverManager.getConnection("jdbc:odbc:"+db,p); }catch(Exception e){ e.printStackTrace(); } } /** * 该方法用来执行SQL并返回结果集 * */ public static ResultSet selectQuery(String db,String sql){ try{ stmt = getConnect(db).prepareStatement(sql); rs = stmt.executeQuery();//执行SQL }catch(Exception e){ e.printStackTrace(); } return rs; } public static Connection getConnect(String db){ DBConnection conn = new DBConnection(db); return connect; } /** * 该方法用来关闭连接 * */ public static void closeConn() { try { rs.close(); stmt.close(); connect.close(); } catch (Exception e) { e.printStackTrace(); } } /** * 测试 * */ public static void main(String[] args){ try{ DBConnection connnect = new DBConnection("reckon"); if(connect!=null){ System.out.println(connect+"\n连接成功"); }else{ System.out.println("连接失败"); } rs= selectQuery("reckon","select * from table1"); if(rs!=null){ while(rs.next()){ System.out.println(rs.getString(1)+"\t"+rs.getString(2)); } } }catch(Exception e){ e.printStackTrace(); }finally{ closeConn();//关闭链接 } } }
5、遇到的问题:
a、中文乱码问题。Access数据库默认以GBK编码,系统中的项目一般以UTF-8编码,因此容易出现乱码,所以在上面的代码中添加了编码处理,也就是:
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");//注册驱动 Properties p = new Properties(); p.put("charSet", "GBK"); connect = DriverManager.getConnection("jdbc:odbc:"+db,p);
b、classNotFound:sun.jdbc.odbc.JdbcOdbcDriver。这个驱动可以找相应的jar包也可以用JDK里面集成的。我这里就是用的集成的。在jdk1.6中有这个驱动,但是1.8却没有这个,因此要是使用1.8的jre环境就需要手动导入rt.jar,这样子就不会报这个异常啦。
c、java.sql.SQLException: [Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序
这个错误看起来是说数据源没有配置,但是我的数据源已经配置过了且配置正确的情况下一运行还是报这个错,不知道问题何在。后来换成1.6的jre就能执行成功,换成1.8的就接着这个错,可能是jre环境的问题吧。我本地有两个jre,1.6是32位的,1.8是64位的,MyEclipse是64位的,Access数据库是32位的。估计跟这些个环境有间接关系吧。
相关推荐
java使用odbc连接access数据库
java连接Access数据库操做数据库驱动 连接方法: public static Connection getNativeConnection(){ try { if(nativeConnection!=null && !nativeConnection.isClosed()){ return ...
Java写了一个连接Access数据库的桌面程序,百度很长时间发现jdk1.8没有rt.jar,没法通过第一种方式jdbc:odbc方式连接access数据库,可以通过第四种方式驱动直连access。 实现步骤①外部jar包(Access_JDBC30.jar)导入...
ODBC-JDBC 桥读取Access数据库 ODBC-JDBC 桥读取Access数据库 ODBC-JDBC 桥读取Access数据库
Java连接access数据库最简单程序例子 JDBC-ODBC 添加数据源
这个是一个简单的用Java语言写的链接access数据库的代码和相关的讲解。用的是ODBC-JDBC桥接的方式。
对于大多数人都会优先选择使用ODBC数据源的方式或者是使用绝对路径的方式连接access数据库,但是我个人认为,这样做不太好,如果采用这样的方式,项目做好后,放到他人的服务器上是无法运行的,因为数据库的信息不...
java jdbc odbc 桥连接包 如何实现JDBC-ODBC桥连接到Access
java工具类 1、Oracle8/8i/9i数据库(thin模式) 2、DB2数据库 3、SQL Server7.0/2000数据库 4、Sybase数据库 5、Informix数据库 6、MySQL数据库 7、PostgreSQL数据库 8、access数据库直连用ODBC的
Java数据库连接(JDBC)由一组用 Java 编程语言编写的类和接口组成。JDBC 为工具/数据库开发人员提供了一个标准的 API,使他们能够用纯Java API 来编写数据库应用程序。...8、access数据库使用ODBC直连
由于Java 8和9不在支持桥接和odbc方式访问access数据库,只能使用Access_jdbc.jar驱动方式访问,但是局限性太大,故花半天时间研究了一下别的驱动方法。这是可使用的demo程序。
Java程序通过JDBC统一访问数据库,因为我们将ACCESS数据库注册到了ODBC数据源所以,Java程序需要加载JDBC-ODBC桥接驱动
jdk1.8 ODBC失效后用第三方jar包让java连接access库,之前用的Access_JDBC30.jar ,虽然连接成功,但是有连接次数限制,改用此方式,亲测连接10000次成功.
其中包含proxool-0.9.1的jar包和源代码 proxool-0.9.1(my).jar 包是我修改了proxool-0.9.1后的jar包,修改后可以完全...修改后的proxool的jar包完全支持Access数据库,包中的实例代码就是以连接Access数据库为例的。
采用java 来访问PI,我修改之后的精简安装包: 集成以下安装包(64位)。 * OLE DB * PI SQL Data Access Server * PI JDBC Driver 2016 博文原文:https://blog.csdn.net/N199109/article/details/78095252
Java中不建立ODBC数据源访问ACCESS数据库
1.Oracle8/8i/9i数据库(thin模式) 2.DB2数据库 3.Sql Server7.0/2000数据库 Sql 2005数据库 4.Sybase数据库 5.Informix数据库 6.MySQL数据库 7.PostgreSQL数据库 8.access数据库直连用ODBC的
java连接MS Access的两种方式: 1.JDBC-ODBC Java连接Access可以使用MS自带的管理工具–>数据源(ODBC)设置建立连接,这样不需要导入jar。但是,如此一来程序部署的每个机器上都要进行设置不方面。所以现在不会...
java连接各种数据库的驱动 jar包 orale: Class.forName("oracle.jdbc.driver.OracleDriver"); mysql:Class.forName("com.mysql.jdbc.Driver"); access:Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); sqlsever:...