顯示具有 Access 標籤的文章。 顯示所有文章
顯示具有 Access 標籤的文章。 顯示所有文章

2015年8月25日 星期二

Jackcess 無法修改Row的error

有時在update row的時後會跳出unsupported collating sort order或類似的error
似乎是資料庫用了Jackcess不支援的sort格式導致的
作者也表示不想花太多時間去支援各種sort格式...
所以必須用Access修改資料庫的排序法才行
已下用Access 2003示範,Acess 2007也可以,只是按紐位置不同而已

1. 打開你的資料庫

2. 工具 -> 選項

3. 一般 -> 新的資料庫排序 -> 選擇「一般」-> 確定
 

4. 工具 -> 資料庫公用程式 -> 壓縮及修復資料庫

再次用Jackcess開啟時就可以正常修改了喔

2015年3月16日 星期一

Jackcess(用來連接Access的Java Library) : (二) 開啟Access檔案

最基本的開啟方法:

Database db = DatabaseBuilder.open(new File("mydb.mdb"));

是不是很簡單呢?
但是如果要應付不同的需求就得增加點變化了

Q1: 如果我的Access資料庫有密碼呢?

確認一下你的專案是否有加入jackcess-encrypt(詳見上一篇)
然後將上面的程式碼改成這樣:

File dbFile = new File("mydb.mdb");
CryptCodecProvider codec = new CryptCodecProvider("my password");
Database db = new DatabaseBuilder(dbFile).setCodecProvider(codec).open();

Q2: Access97打不開!

由於Jackcess目前只支援Access 97 read only
所以開啟97的mdb時必須聲明唯讀

Database db = new DatabaseBuilder(dbFile).setReadOnly(true).open();

Q3: 讀取出來的資料變成亂碼怎麼辦?

像我的mdb檔中文字是用big5編碼
讀出來全是亂碼
Jackcess一樣提供了編碼解決方案:

Database db = new DatabaseBuilder(dbFile).setCharset(Charset.forName("big5")).open();

2015年3月12日 星期四

Jackcess(用來連接Access的Java Library) : (一) 將Jackcess library加入專案

因為工作的關係需要將一個古老的Access 97資料庫轉換到MySQL
但大部分的資料庫library都不支持Access 97
最後終於找到這個 Jackcess
支援Access 2000-2010 read/write
不過Access 97只有read only
以下將介紹如何把Jackcess加入你的專案

1.
先下載 jackcess-x.x.x.jar 並加入專案

2.
使用前必須先加入一些必要的Library
Jackcess 2.0.8版需要的library如下
commons-lang-2.6.jar
commons-logging-1.2.jar
相關內容也寫在:Project Dependencies
注意:如果用commons-lang 3.x可能會出現錯誤

3.
如果你的Access資料庫有密碼,那就得再加入Jackcess Encrypt
下載並加入以下library:
jackcess-encrypt-x.x.x.jar
bcprov-jdk15

使用方法在官網有簡要的說明:jackcess cookbook
我接下來也會再作相關的筆記

Jackcess(用來連接Access的Java Library) : (二) 開啟Access檔案