`
shulinshulinzi
  • 浏览: 7692 次
  • 性别: 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工具类:java连接各个数据库方法.java

    java工具类 1、Oracle8/8i/9i数据库(thin模式) 2、DB2数据库 3、SQL Server7.0/2000数据库 4、Sybase数据库 5、Informix数据库 6、MySQL数据库 7、PostgreSQL数据库 8、access数据库直连用ODBC的

    java连接数据库工具类--DBConnection(java源码)

    * 获得与数据库的连接 * * @param path * @return Connection */ public static Connection getConn(String classDriver, String url, String user, String pwd) { try { Class.forName(class...

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

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

    JAVA各种数据库使用JDBC连接的方式

    Java数据库连接(JDBC)由一组用 Java 编程语言编写的类和接口组成。JDBC 为工具/数据库开发人员提供了一个标准的 API,使他们能够用纯Java API 来编写数据库应用程序。...8、access数据库使用ODBC直连

    数据库工具类DatabaseUtil.java

    * Title: 数据库工具类 * * * Description: 将大部分的数据库操作放入这个类中, 包括数据库连接的建立, 自动释放等. * * * @author beansoft 日期: 2004年04月 * @version 2.0 */ public class ...

    DBUtils.java数据库的基础封装操作

    在封装SQL语句之前,我们得知道什么是DAO封装与实体类以及JDBC工具类的封装与连接数据库的具体流程。 封装SQL语句的好处: 封装SQL语句后就可以导包,给其他的工程使用,大大降低开发的强度,减少代码的冗余。...

    java源码包---java 源码 大量 实例

     Java访问权限控制,为Java操作文件、写入文件分配合适的权限,定义写到文件的信息、定义文件,输出到c:/hello.txt、写信息到文件、关闭输出流。 Java绘制图片火焰效果 1个目标文件 摘要:Java源码,图形操作,火焰...

    数据库设计/自动安装工具BDB 2007 V2.3(For Oracle/MS SQLServer/Access/MySQL/SQLAnyWhere/Sybase)

    BDB是跨数据库平台的数据库设计和自动安装工具、 支持Oracle、MS SQLServer、Access、MySQL、SQLAnyWhere、Sybase数据库。 通过BDB可以快速建立数据库模型、并随时与实体数据库进行双向同步。 同时它还可以...

    Access_JDBC30.jar-Java工具类资源

    JDK1.8连接Access数据库-驱动-----Access_JDBC30.jar JDK1.8连接Access数据库-驱动-----Access_JDBC30.jar

    java源码包4

     Java访问权限控制,为Java操作文件、写入文件分配合适的权限,定义写到文件的信息、定义文件,输出到c:/hello.txt、写信息到文件、关闭输出流。 Java绘制图片火焰效果 1个目标文件 摘要:Java源码,图形操作,火焰...

    java源码包3

     Java访问权限控制,为Java操作文件、写入文件分配合适的权限,定义写到文件的信息、定义文件,输出到c:/hello.txt、写信息到文件、关闭输出流。 Java绘制图片火焰效果 1个目标文件 摘要:Java源码,图形操作,火焰...

    java源码包2

     Java访问权限控制,为Java操作文件、写入文件分配合适的权限,定义写到文件的信息、定义文件,输出到c:/hello.txt、写信息到文件、关闭输出流。 Java绘制图片火焰效果 1个目标文件 摘要:Java源码,图形操作,火焰...

    java写的FTP上传下载工具(支持多用户)

    java写的FTP工具,登陆用的是access 数据库,支持多用户登陆。数据库在database文件夹里面,初始登陆名lhz,密码123。

    JAVA上百实例源码以及开源项目

     Java访问权限控制,为Java操作文件、写入文件分配合适的权限,定义写到文件的信息、定义文件,输出到c:/hello.txt、写信息到文件、关闭输出流。 Java绘制图片火焰效果 1个目标文件 摘要:Java源码,图形操作,火焰...

    代码自动生成工具(vb类 java类 sql存储过程...)

    VB 三层结构中实体和实体操作类 Java MVC 模式下Bean和 Action类 MSSQL 表操作存储过程的示例 (update, insert, delete) 支持数据字典生成 生成格式可以是 Word 或Excel 格式   支持简单的 SQL 语句...

    JAVA上百实例源码以及开源项目源代码

     Java访问权限控制,为Java操作文件、写入文件分配合适的权限,定义写到文件的信息、定义文件,输出到c:/hello.txt、写信息到文件、关闭输出流。 Java绘制图片火焰效果 1个目标文件 摘要:Java源码,图形操作,火焰...

    C#,Java生成实体类工具源码

    生成实体类工具源码,可以生成C#,Java的实体类,支持Access,SqlServer,Oracle数据库。我也是网上找到的,供大家学习参考下!

    数据库设计工具BDB v3.0

    开放的数据库物理结构文件格式(XML标准格式),并提供了外部调用数据库结构源程序 (包含C#/Delphi/JAVA三个版本)。 &lt;br&gt;11,支持多语言。 可根据需要增加新的语言包。 &lt;br&gt; &lt;br&gt;

    一个开源的Java基础工具包

    一、数据库工具类 1、com.baijob.commonTools.db.ds C3p0Ds 和 DruidDs分别是两种连接池的实现,依赖于数据库配置文件,配置文件的样例参考config/db-example.setting 使用时将db-example.setting复制于${...

Global site tag (gtag.js) - Google Analytics