java怎么解析mdb文件_java解析MDB文件的方法,已经写成公用方法
近期,有人和我說某些企業的數據是存儲在Access庫中,該文件以點mdb(.mdb)結尾,新人也許不知道Access。它是微軟的辦公軟件存儲形式,與office一樣,是很早期的存儲方案。
Java 為Access提供了解決方案,一種是橋接模式,即odbc形式,它不需要導任何包,因為它被封裝在JDK1.7中,而如今,使用JDK1.8的較多,因為JDK6和JDK7并沒有什么大改進,就像iPhone6和iPhone7,沒啥變化,但愿IPhone8不會讓我們大失所望,雖然我現在仍然用iPhone5S。
插播一段廣告(我這電話用4年了快,16G的,居然不卡。要是安卓估計早就廢了,難道這就是開源的弊端?雖然我很愛國,但也希望山寨機能加強點,別打臉啊)。
再看看JDK1.8,真可謂翻云覆雨啊!我個人對并發比較感興趣,所以當它出來的時候,就喜歡CompleteFuture加上流式編程。扯遠了,說說怎么解析Mdb吧。顯然Jdk1.8取代了橋接模式。所以你解析時總會報錯,告訴你沒有這種類型的驅動器。那是不是就沒辦法了呢!不是的,這里我介紹一個jar包,Access_JDBC30.jar,這東西就和mysql驅動性質一樣,只不過使用方法有所差異。
/**
* @category mdb文件的解析
* @author PQF
*/
public static List> resolverMdb(String mdbPath,
String sql, Object... column) throws Exception {
List> entityList = new ArrayList<>();
if (mdbPath.isEmpty() || sql.isEmpty() || column.length < 1) {
throw new Exception("mdb文件路徑不能為空或者SQL語句不能為空,并且列的長度不能小于1");
}
Properties prop = new Properties();
prop.put("charSet", "UTF-8");
String dbUr1 = "jdbc:Access:///" + mdbPath;
Class.forName("com.hxtt.sql.access.AccessDriver").newInstance();
try (Connection conn = DriverManager.getConnection(dbUr1, prop);
Statement statement = conn.createStatement();
ResultSet result = statement.executeQuery(sql)) {
Map mapList = null;
while (result.next()) {
mapList = new HashMap<>();
for (Object col : column) {
mapList.put((String) col, result.getString((String) col));
}
entityList.add(mapList);
}
} catch (Exception e) {
e.printStackTrace();
}
return entityList;
}
這里注意兩點:1.String dbUr1 =
"jdbc:Access:///" + mdbPath;
標紅的地方(jdbc:Access:///)千萬不能去掉啊!!!!
2.Class.forName("com.hxtt.sql.access.AccessDriver").newInstance();
驅動名稱是固定的,別瞎改!!!后面的newInstance(),可以加,也可以不加。
此方法已讓我編寫的十分簡單,傳送一個文件路徑,然后一段查詢的SQL,和你要查詢的列的名稱即可。什么???你說你不會用???別鬧了朋友,你搞笑呢???自己琢磨吧!!!
感謝讀者的光顧。
總結
以上是生活随笔為你收集整理的java怎么解析mdb文件_java解析MDB文件的方法,已经写成公用方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: WORD中的多级列表详解
- 下一篇: DVWA——XSS(Reflected)