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();
		 }
	}
	
}

猜你喜欢

转载自shulinshulinzi.iteye.com/blog/2366416