`
shulinshulinzi
  • 浏览: 8005 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

java操作Access数据库文件工具类

阅读更多

自己封装的java读取Access数据库文件的工具类,样例数据查看器等在附件中

package show;

import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;

/**
 * 操作Access数据库文件的工具类
 * @author zhLin
 *@Date 2017-3-29
 */
public class ReadAccessUtils {
	/**驱动名称**/
	public static final String accessDriverName = "sun.jdbc.odbc.JdbcOdbcDriver";
	/**Access数据库连接前缀**/
	public static final String url_prefix = "jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=";
	/**用户名字段**/
	public static final String cons_user = "user";
	/**密码字段**/
	public static final String cons_password = "password";
	
	
	/**获取到表Access数据库文件中所有表名**/
	public static List<String> getAccessTablesName(String fileFullPath){
		List<String> nameList = new ArrayList<String>();
		Connection  conn =getAccessConnection(fileFullPath); 
		DatabaseMetaData meta;
		try {
			
			meta = conn.getMetaData();
			ResultSet rs = meta.getTables(null, null, null,new String[] { "TABLE" });
			 while (rs.next()) {
			     nameList.add(rs.getString(3));
			   }
			 
			 rs.close();//关闭结果集
			 
		} catch (SQLException e) {
			e.printStackTrace();
		}finally{
				try {
					conn.close();//关闭连接
				} catch (SQLException e) {
					e.printStackTrace();
				}
		}
		return nameList;
	}
	
	/**得到查询表的列信息**/
	public static List<String> getAccessColumnsName(String fileFullPath,String tableName){
		List<String > colNameList = new ArrayList<String>();
		Connection conn = getAccessConnection(fileFullPath);
		String sql = "select * from "+tableName;
		ResultSet rs=null;  
		
		try {
			 Statement stmt = conn.createStatement();
			 rs = stmt.executeQuery(sql);//执行查询
			 ResultSetMetaData data=rs.getMetaData();//获取到列信息 
			 int  cnt = data.getColumnCount();//获取到列总数
			 
			 for(int i =1;i<=cnt;i++){//遍历列,从1开始
				 colNameList.add(data.getColumnName(i));
			 }
			 
			 rs.close();
		} catch (SQLException e) {
			e.printStackTrace();
		}finally{
			try {
				conn.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		
		return colNameList;
		
	}
	
	/**
	 * 返回数据列表
	 * 第一行为列名,后面为值
	 * **/
	public static List<List<String>> getAccessDataLists(String fileFullPath,String tableName){
		List<List<String>> dataLists = new ArrayList<List<String>>();//返回结果集
		List<String > colList = new ArrayList<String>();//列名集合
		Connection conn = getAccessConnection(fileFullPath);//数据库连接
		String sql = "select * from "+tableName;
		ResultSet rs=null;  
		
		try {
			 Statement stmt = conn.createStatement();
			 rs = stmt.executeQuery(sql);//执行查询
			 ResultSetMetaData data=rs.getMetaData();//获取到列信息 
			 int  cnt = data.getColumnCount();//获取到列总数
			 
			 for(int i =1;i<=cnt;i++){//遍历列,从1开始
				 colList.add(data.getColumnName(i));
			 }
			 //第一行插入列名
			 dataLists.add(colList);
			 
		    while(rs.next()) {//遍历结果集  
		    	colList = null;
		    	colList = new ArrayList<String>();
		    	 
		    	for(int i =1;i<=cnt;i++)//遍历列,从1开始
					 colList.add(rs.getString(i));
		    	
		    	 //插入数据列
				 dataLists.add(colList); 
		    }
			 
			 rs.close();
		} catch (SQLException e) {
			e.printStackTrace();
		}finally{
			try {	conn.close();
			} catch (SQLException e) {
				e.printStackTrace();	}
		}
		
		return dataLists;
	}
	
	/**依据Access数据库文件路径,获取到数据库连接**/
	public static Connection getAccessConnection(String fullFilePath){
		  String  url=url_prefix+fullFilePath;   //文件地址  
		  Connection conn = null;
		  
		  Properties prop = new Properties();
		  prop.put("charSet", "gb2312");     //这里是解决中文乱码  
		  prop.put(cons_user, "");  
		  prop.put(cons_password, "");  
		   
		try {
			conn = DriverManager.getConnection(url,prop);
		} catch (SQLException e) {
			e.printStackTrace();
		}     
		   
		   return conn;
	}
	
	
	public static void main(String[] args)  {
		 String filePath = "D:\\Develop_tool\\Test\\Northwind.mdb";
		 List< List<String>>  dataList = getAccessDataLists(filePath,"雇员");
		 
		 for (List<String> list:dataList){
			 for(String value:list){
				 System.out.print("\t"+value);
			 }
			 System.out.println();
		 }
	}
	
}

 

0
1
分享到:
评论

相关推荐

    JAVA连接ACCESS数据库文件(.mdb/.accdb)所需的jar包

    总的来说,通过正确配置和使用`ucanaccess`和`hsqldb`的JAR文件,Java开发者可以轻松地与Access数据库进行交互,执行查询、插入、更新和删除等操作,从而实现数据的管理和处理。不过,考虑到性能和扩展性,对于大型...

    Java连接access数据库(图文)

    本文将详细介绍如何使用Java来连接Microsoft Access数据库,并进行基本的数据操作。通过本文的学习,你将能够掌握Java连接Access数据库的基本步骤和技术要点。 #### 二、JDBC简介 JDBC(Java Database ...

    java工具类:java连接各个数据库方法.java

    ### Java工具类:Java连接各个数据库方法 在Java开发中,连接不同的数据库是常见的需求之一。本文将详细介绍如何通过Java工具类实现与多种数据库的连接,包括Oracle、DB2、SQL Server、Sybase、Informix、MySQL、...

    纯java访问access数据库jackcess-1.2.9.jar

    而Apache Commons Lang是Java实用工具类的集合,提供了各种字符串处理、日期时间处理等通用功能,增强了Java的标准库。 使用Jackcess进行数据库操作的基本步骤如下: 1. 添加依赖:将jackcess-1.2.9.jar,Apache ...

    Windows中Java连接Access数据库

    总之,通过理解JDBC的工作原理,使用适当的驱动(如`UCanAccess`),并编写正确的Java代码,就能在Windows环境下成功地连接和操作Access数据库。这个过程中涉及到的编程技巧和数据库知识对于任何Java开发者来说都是...

    Access MDB文件解析查询,Access数据库解析工具类MdbUtils

    `MdbUtils.java`文件很可能是这个工具类的实现代码,包括上述提到的各种功能。通过阅读和理解这个文件,你可以了解到如何在Java中操作Access MDB文件,包括如何构建SQL查询,处理结果集,以及管理数据库连接。对于...

    jdbc连接access数据库的驱动jar包

    这个JAR文件包含了驱动程序的类和其他必要的资源,使得Java程序能够识别并操作Access数据库。 描述中的“亲测可用,不限次数”意味着这个驱动已经经过了实际测试,证明它可以成功地与Access数据库建立连接,并且...

    jackcess1.29API配合jackcess包纯java操作access数据库

    总的来说,Jackcess为Java开发者提供了一个强大且灵活的工具,使他们能够在各种操作系统上(包括Windows和Linux)直接处理Access数据库,无需依赖其他平台特定的软件。利用这个库,你可以构建出跨平台的数据处理应用...

    基于Java的数据库同步工具设计源码

    数据库同步工具:基于Java开发,包含22个文件,包括9个Java类文件、2个Markdown文档、2个JAR包文件、2个XML配置文件、2个Properties配置文件、1个.gitignore文件、1个LICENSE文件、1个PNG图像文件、1个GIF图像文件、...

    基于Java的源码-Jackcess(Java的Access数据库操作库).zip

    Java中的Jackcess库是一个强大的工具,它允许开发者在Java应用程序中直接操作Microsoft Access数据库。这个开源库提供了对.MDB和.ACCDB文件格式的全面支持,使得在Java环境中处理Access数据库变得简单而高效。以下是...

    Jackcess(Java的Access数据库操作库).zip

    这个库使得在Java环境中无需依赖Microsoft Office组件就能读取、写入甚至修改Access数据库文件,大大增强了Java应用程序处理Access数据的能力。在本文中,我们将深入探讨Jackcess的核心功能、使用方法以及其在实际...

    Java连接Access数据库.pdf

    本话题主要关注如何使用Java语言连接到Microsoft Access数据库。Access是一种流行的轻量级数据库管理系统,适用于小型项目和个人使用。以下将详细介绍Java连接Access数据库的过程,以及提供的示例代码解析。 1. **...

    Java数据库操作类20170703

    DBUtil.java文件通常包含数据库操作的通用工具类,它封装了常见的数据库操作,如打开、关闭连接,执行SQL语句,处理结果集等。这样的设计使得代码更加简洁,可读性更强,同时也降低了出错的可能性。开发者可以借助...

    Java仓库管理系统,Access数据库javalearnsa资料分享

    Java通过JDBC(Java Database Connectivity)API与Access数据库进行交互,实现数据的增删改查操作。 在这个资料分享中,"javalearnsa160.zip"可能包含了该仓库管理系统的源代码、数据库文件、配置文件、文档等资源...

    Java连接access数据库

    ### Java连接Access数据库详解 #### 一、JDBC简介 JDBC(Java Database Connectivity)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了...

    java访问Access数据库

    Java 访问 Access 数据库是通过 JDBC(Java Database Connectivity)技术实现的,JDBC 是 Java 平台中用于与各种数据库交互的一套标准 API。它允许 Java 应用程序执行 SQL 语句并处理结果。在 Java 中,访问 Access ...

    不建数据源java+Access,jsp+Access

    在这个项目中,开发者通过编写Java代码和JSP页面,直接使用JDBC(Java Database Connectivity)API来与Access数据库进行通信,这包括建立连接、执行SQL语句、处理结果集等操作。 首先,Java连接Access数据库通常...

    Access数据库mdb生成代码(JAVA源代码)

    通过这个示例,开发者可以学习如何在Java中使用Jackcess库与其他依赖库来读写Access数据库,实现数据库操作。这涵盖了文件I/O、数据库连接、SQL查询、事务处理等多个Java编程和数据库操作的基础知识。同时,了解这些...

Global site tag (gtag.js) - Google Analytics