Java读取Mdb初试

来源:互联网 发布:虚拟桌面软件dexpot 编辑:程序博客网 时间:2024/06/16 02:07

项目中需要用到Java读取Mdb文件,因此参考java读取mdb文件 包含列名做了一个Demo,可以实现链接mdb文件--->获取第一个表名--->将该表中的数据依次打印出来。

这里公布出来,供自己以后复习使用,也供初学者参考。

代码如下:

package sun.nan.test;import java.io.File;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.ResultSetMetaData;import java.sql.Statement;import java.util.Properties;public class TestMdb {/** * TODO : 读取文件access *  * @param filePath * @return * @throws ClassNotFoundException */public static void readFileACCESS(File mdbFile) {Properties prop = new Properties();prop.put("charSet", "gb2312"); // 这里是解决中文乱码prop.put("user", "");prop.put("password", "");String url = "jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ="+ mdbFile.getAbsolutePath();Statement stmt = null;ResultSet rs = null;String tableName = null;try {Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");// 连接到mdb文件Connection conn = DriverManager.getConnection(url, prop);ResultSet tables = conn.getMetaData().getTables(mdbFile.getAbsolutePath(), null, null,new String[] { "TABLE" });// 获取第一个表名if (tables.next()) {tableName = tables.getString(3);// getXXX can only be used once} else {return;}stmt = (Statement) conn.createStatement();// 读取第一个表的内容rs = stmt.executeQuery("select * from " + tableName);ResultSetMetaData data = rs.getMetaData();while (rs.next()) {for (int i = 1; i <= data.getColumnCount(); i++) {System.out.print(rs.getString(i) + "");}System.out.println();}} catch (Exception e) {e.printStackTrace();}}public static void main(String[] args) {readFileACCESS(new File("d://tmp/test.mdb"));}}

还有2个问题尚未解决,希望高手帮忙解答:

① Java读取Mysql需要用到jdbc的包,读取mdb怎么不需要第三方的包?

②其实和①是有一定关系的,是否这种读取方式只能在windows上面运行?

有空也会自己测试来解答的。。。

0 0