mysql odbc连接 mdb_java中采用ODBC方式连接Access数据库
1、新建数据库:
在Access中新建数据库reckon.accdb(我本地的Access是2007的,2003的拓展名为mdb),存放在D盘Access目录下。
2、安装Access驱动程序:
从“开始——>控制面板——>系统和安全——>管理工具——>数据源(ODBC)——>系统驱动”中查看是否安装Access的ODBC驱动程序。若不存在则需要安装Microsoft Access驱动程序。
有时候系统中明明安装了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位的。估计跟这些个环境有间接关系吧。
mysql odbc连接 mdb_java中采用ODBC方式连接Access数据库相关推荐
- 使用JDBC-ODBC桥接方式访问Access数据库(实例)
<!-- 使用JDBC-ODBC桥接方式访问Access数据库 --> <% String drivername="sun.jdbc.odbc.JdbcOdbcDriver ...
- mysql表连接_SELECT中的多表连接
MySQL多表连接查询 连接(join):将一张表中的行按照某个条件(连接条件)和另一张表中的行连接起来形成一个新行的过程. 根据连接查询返回的结果,分3类: 内连接(inner join) 外连接( ...
- 涉密台式计算机密码可以输入几次,涉密打印机、扫描仪等与涉密计算机之间不采用无线方式连接 - 作业在线问答...
相关题目与解析 涉密打印机和扫描仪不得与互联网等公共信息网络连接,与涉密计算机连接()采用无线方式.A.经过 使用打印机.扫描仪,以下选项符合保密管理要求的是(). 涉密打印机和扫描仪可以采取有线或无 ...
- 点歌机一直显示连接服务器中,点歌机正在连接云服务器
点歌机正在连接云服务器 内容精选 换一换 文档数据库服务提供使用数据管理服务(Data Admin Service,简称DAS).内网和公网的连接方式.文档数据库服务默认为您开通了远程主机登录权限,推 ...
- ssh连接虚拟机中mysql_用SSH连接Vmware redhat虚拟机
我在winxp的虚拟机上装了一个redhat Enterpirse Linux 4的系统,winxp的ip为192.168.10.1,redhat的ip为192.168.10.130,使用NAT方式连 ...
- c#程序中使用quot;like“查询access数据库查询为空的问题
今天,在开发的过程中发现了一个特别奇怪的问题:access中like查询时候.在Access数据库中运行,发现能够查询出结果.这是在数据库上运行.select * from KPProj where ...
- mysql ( )连接_MySQL中concat函数(连接字符串)
MySQL中concat函数 使用方法: CONCAT(str1,str2,-) 返回结果为连接参数产生的字符串.如有任何一个参数为NULL ,则返回值为 NULL. 注意: 如果所有参数均为非二进制 ...
- linux中使用net方式连接网络,如何使用 Netplan 从终端连接到无线网络?
我的家用电脑主要使用桌面 Linux.我也有多台 Linux 服务器用于托管网站以及开源软件,如 Nextcloud.Discourse.Ghost.Rocket Chat 等. 我可以使用 lino ...
- mysql varchar(20)_MySQL中采用类型varchar(20)和varchar(255)对性能上的影响
MySQL建立索引时如果没有限制索引的大小,索引长度会默认采用的该字段的长度,也就是说varchar(20)和varchar(255)对应的索引长度分别为203(utf-8)(+2+1),2553(u ...
最新文章
- SciDB 15.7 centos6.5 安装教程
- NOI2020 前最后的日子
- tftp服务器_Transfer for Mac(TFTP服务器)
- linux php7 安装redis扩展(php7可以使用自测)
- linux上用mplayer播放cue文件的设想
- 【转】android TV CTS 4.0.3_r1测试
- Selenium不打开浏览器采爬取数据 Java
- idea ---- 快捷键
- Python爬虫周记之案例篇——基金净值Selenium动态爬虫
- clipboard.js使用方法
- latex acm-sigconf使用总结
- SQL 如何将视图转换成表
- 数字化测图是利用计算机自动绘制地形图,《数字测图原理与方法》下学期总复习...
- 软考系统集成项目管理工程师真题
- 【Dart语言第1篇】基础学习
- word中图片为嵌入式格式时显示不全_毕设时,在word中插入图片时,图片的格式改为嵌入式后图片藏于文字下方怎么办?...
- 计算机实践游戏报告范文,关于在校学生玩电脑游戏的调查报告
- LinkIn基于Dynamo设计的系统:伏地魔(voldemort)设计中文文档[我是陈科学院译]-完稿...
- java中的递归算法_java递归算法实例分析
- 用Java swing写的一个音乐播放器的个性化界面实现作业(只有界面!)