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数据库的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: NDoc1.3.1使用手册
- 下一篇: linux cmake编译源码,linu