JDK1.8 连接微软 Access 数据库

原文链接:http://www.benchresources.net/jdbc-msaccess-database-connection-steps-in-java-8/

       最近期末把手头上的事情做完,闲着无聊,捣鼓了一下 Java 的数据库连接,先从最基础的微软的 Access 开始下手。一开始从网上搜的教程 JDK 版本太老,在 JDK1.8 上无法适用,还有的教程需要修改系统上的 ODBC 数据资源管理程序,实在是太繁琐,于是自行 Google 了一把,找到了如上的良心教程。

       JDK1.8 是无法直接连接微软的 Access 数据库的,在网上查找了一下原因,大概意思就是 Java 从 JDK1.6 之后就移除了Access 桥接驱动,因此不再支持 jdbc:odbc 桥接方式,需要下载 Access 驱动 jar 包(Access_JDBC30.jar)。但是这个驱动包我自己 Google 了一下,发现并没找到官方下载地址,CSDN 上倒是有,但需要积分才能下载,并且这个驱动包好像有使用次数限制(只能用50次),很不友好。

       而上面教程中的 UCanAcsess 免费开源,下载地址为:https://sourceforge.net/projects/ucanaccess/files/。这里,我选择下载:UCanAccess-4.0.3-bin.zip。解压之后得到我们需要的五个文件如下:

JDK1.8 连接微软 Access 数据库_第1张图片

     其中,前 4 个文件在:UCanAccess-4.0.3-bin\bin\ 目录下,最后一个文件在:UCanAccess-4.0.3-bin\ 目录下。然后在Eclipse 中将这 5 个文件添加到 Java 项目中。具体做法为:右击创建的 Access 连接项目-->Build Path-->Configure Build Path-->Libraries-->Add External JARs。

      最后附上教程的源代码:

package com.Acess;
import java.sql.*;

public class Acess {
	
	public static void main(String[] args) throws Exception {
		// variables
		Connection connection = null;
		Statement statement = null;
		ResultSet resultSet = null;

		// Step 1: Loading or registering Oracle JDBC driver class
		try {
			Class.forName("net.ucanaccess.jdbc.UcanaccessDriver");
		} catch (ClassNotFoundException cnfex) {
			System.out.println("Problem in loading MS Access JDBC driver");
			cnfex.printStackTrace();
		}

		// Step 2: Opening database connection
		try {
			String msAccDB = "D:/a1.accdb";
			String dbURL = "jdbc:ucanaccess://" + msAccDB;

			// Step 2.A: Create and get connection using DriverManager Class
			connection = DriverManager.getConnection(dbURL);
			
			// Step 2.B: Creating JDBC Statement
			statement = connection.createStatement();
			
			// step 2.C: Executing SQL &retrieve data into ResultSet
			resultSet = statement.executeQuery("select * from student");
			
			//processing returned data and printing into console
			while(resultSet.next()) {
				System.out.println(resultSet.getInt(1) + "\t" + 
						resultSet.getString(2) + "\t" + 
						resultSet.getString(3) + "\t" + 
						resultSet.getString(4));
			}
		} 
		catch (SQLException sqlex) {
			sqlex.printStackTrace();
		} 
		finally {
			// Step 3: Closing database connection
			try {
				if(null != connection) {
					// cleanup resources, once after processing
					resultSet.close();
					statement.close();
					
					// and then finally close connection
					connection.close();
				}
			} catch (SQLException sqlex) {
				sqlex.printStackTrace();
			}
		}
	}
}

 

你可能感兴趣的:(Java)