自己封装的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(); } } }