[Microsoft][ODBC 驅動程序管理器] 未發現數據源名稱並且


(servlet:https://blog.csdn.net/ooooooobh/article/details/52212345)

連接access數據庫,網上的內容很多,嘗試的過程中也會遇到各種問題,沒有特別好的介紹,所以自己想總結一下,日后備用。

這里需要提前說明下,win7系統32bit和64bit默認安裝的access都是32bit的,但是如果是64bit的系統連接access數據庫時需要安裝64bit的office軟件,下面會說到。

以64bit操作系統為列

第一種:電腦上配置結合java代碼實現

a.打開目錄C:\Windows\System32找到odbcad32.exe文件,雙擊打開

b.點擊右側添加按鈕,在列表中選擇access數據庫驅動

這個地方要注意,使用純java實現連接access數據庫的時候需要寫access的驅動,而access的驅動名稱是根據這里寫的,也就是你本機有的驅動,而不是網上說的什么要有空格,要把*.mdb, *.accdb換成*.mdb或者*.accdb之類。因此這里需要注意。另外還可能有個問題。有可能點擊添加的時候這里並沒有access驅動,或者報錯[Microsoft][ODBC 驅動程序管理器] 未發現數據源名稱並且未指定默認驅動程序時,

這個時候網上下載一個AccessDatabaseEngine_X64.exe,如果是32bit操作系統相應的下載AccessDatabaseEngine_X32.exe即可,點擊下載64bit驅動

c.點擊完成出現下列對話框,數據源名稱隨意填寫,說明可有可無,就是對數據源的描述,點擊選擇按鈕選擇數據庫所在的路徑

d.點擊確定按鈕后就可以在ODBC數據源管理器中看到添加的數據源

e.下面是java的代碼

package com.xu.bean; import java.io.UnsupportedEncodingException; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class ConnectAccessDatabase { public static void main(String[] args) { try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); String url = "jdbc:odbc:databaseName";//databaseName就是剛剛添加的數據源名稱 Connection con = DriverManager.getConnection(url, "", "");//沒有用戶名和密碼的時候直接為空 Statement sta = con.createStatement(); ResultSet rst = sta.executeQuery("select * from demoTable");//demoTable為access數據庫中的一個表名 if(rst.next()){ System.out.println(rst.getString("name")); //解決亂碼問題 // System.out.println(new String(rst.getBytes("name"), "gbk")); } } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } /*catch (UnsupportedEncodingException e) { e.printStackTrace(); }*/ } } 

然后運行代碼即可

第二種方式:純jiava實現

a.這里需要注意的就是url那里,前面也提到過是根據電腦本地有的驅動寫的

 

package com.xu.bean; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; /** * 純java代碼實現 連接access數據庫 * @author xuyl * */ public class ConnectAccessDatabase2 { public static void main(String[] args) { try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); String url = "jdbc:odbc:driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=E:\\demo.mdb"; Connection con = DriverManager.getConnection(url, "", "");//沒有用戶名和密碼的時候直接為空 Statement sta = con.createStatement(); ResultSet rst = sta.executeQuery("select * from demoTable");//demoTable為access數據庫中的一個表名 if(rst.next()){ System.out.println("純java代碼實現:" + rst.getString("name")); } } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } } } 

b.運行結果

 

 

 

 

 

第三種方式:使用RmiJdbc.jar(也是遠程連接的方法)以遠程連接為例

首先下載RmiJdbc.jar

在放置Access數據庫的電腦上配置 1.配置RmiJDbc.jar環境變量(在這之前還需要配置jdk環境,jdk配置可自行百度)​ 解壓縮RmiJdbc3.3.zip,將解壓出的文件放在任意盤符。右鍵計算機選擇屬性 - 選擇高級系統設置 - 選擇環境變量 - 在系統變量中找到CLASSPATH選中點擊編輯按鈕在最后面添加%CLASSPATH%;D:\RmiJdbc3.3\RmiJdbc\dist\lib\RmiJdbc.jar(以放在d盤跟目錄為例) 2.啟動RmiJbdc.jar服務 win + r 建打開運行窗口輸入cmd打開命令窗口輸入 java -jar D:\RmiJdbc3.3\RmiJdbc\dist\lib\RmiJdbc.jar出現下圖所示即配置成功。 

啟動之后需要一直運行。

3.配置數據源

根據上面的方法配置好數據源

4.java代碼

 

public static String executeQuery(String sql) { log.info("===========executeQuery start============="); String jsonArray = "{"; StringBuilder jsonObject = new StringBuilder(); Connection con = null; Statement stmt = null; ResultSet rst = null; try{ //注冊數據提供程序 Class.forName("org.objectweb.rmijdbc.Driver").newInstance(); //accessDatabase為遠程服務器數據源名稱 // String url = "jdbc:rmi://10.23.16.83/jdbc:odbc:accessDatabase"; //生產地址 String url = "jdbc:rmi://10.23.10.6/jdbc:odbc:accessDatabase"; // String url = "jdbc:rmi://10.23.71.211/jdbc:odbc:demo"; //建立連接 con = DriverManager.getConnection(url, "", ""); stmt = con.createStatement(); rst = stmt.executeQuery(sql); if(rst != null){ while(rst.next()){ String id = rst.getInt("id") + ""; String name = new String(rst.getBytes("title"), "gbk"); String time = rst.getDate("adate").toString(); String filePath = rst.getString("url"); jsonObject.append("{\"ID\":\"" + id + "\", \"NAME\":\"" + name + "\", \"FILE_PATH\":\"" + filePath + "\", \"TIME\":\"" + time + "\"}, "); } String temp = jsonObject.toString(); temp = temp.substring(0, temp.length() - 2); jsonArray += "\"IS_EMPTY\":\"N\",LIST:[" + temp + "]}"; }else{ jsonArray += "\"IS_EMPTY\":\"Y\"}"; } }catch(Exception e){ log.info("===========executeQuery start=============" + e.getMessage()); }finally{ try { con.close(); stmt.close(); } catch (SQLException e) { e.printStackTrace(); } } log.info("===========executeQuery end============="); return jsonArray; }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM