2017年10月27日 星期五

讓JAVA讀取ACCESS資料庫的方法

先下載 UCanAccess
https://drive.google.com/file/d/0B4A4xib87TTcTFZpdHZ0ZVlfQnM/view?usp=sharing&resourcekey=0-Uxga50RFzN3ZaaBxA4lNOQ
解壓縮後,會有五個JAR檔案

ucanaccess-4.0.2.jar
lib/commons-lang-2.6.jar
lib/commons-logging-1.1.1.jar
lib/hsqldb.jar
lib/jackcess-2.1.6.jar

先把這五個檔案新增成外部JAR

作法:在專案上按右鍵→內容→JAVA建置路徑→新增外部JAR

然後就可以開始寫程式了

程式碼參考如下

package jdbcexample;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import net.ucanaccess.jdbc.JackcessOpenerInterface;
public class JDBCExample 
{
    public static void main(String[] args) throws SQLException 
    {
        Connection connDB = null;
        try
        {
            //建立驅動程式,連結odbc至Microsoft Access
         Class.forName("net.ucanaccess.jdbc.UcanaccessDriver");
        }catch(ClassNotFoundException e)
        {
            System.out.println("Driver loading failed!");
        }  
        //連結資料庫
        connDB = DriverManager.getConnection("jdbc:ucanaccess://d:/text.mdb");
        //SQL共有 INSERT、SELECT、UPDATE、DELETE,以下分別列舉
        Statement st = connDB.createStatement();        
        st.execute("SELECT * FROM pic");
        ResultSet rs = st.getResultSet();
        while(rs.next())
        {
            System.out.println(rs.getString("識別碼")+" "+rs.getString("檔案名稱"));
        }        
    }
}



106.10.31 要讓視窗程式讀取ACCESS

1.在視窗程式的 public 後面加上 throws SQLException
2.後面再加上讀取資料庫的程式
3.下方說明是讓JTextArea可以使用捲軸
4.紅色字體部分是後來加上的 下拉式選單設定

public TEXT() throws SQLException{
    JFrame f = new JFrame("Text Area Examples");
     f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     JTextArea content = new JTextArea(100,10) ;
     JScrollPane g = new JScrollPane(content);
     f.setBounds(100,100,582,520);
     f.setVisible(true);
     f.getContentPane().setLayout (null); //nul表示自訂樣式,不使用預設的樣式         
     //content.setBounds(10,10,100,100);
     g.setBounds(110,51,413,390);
     f.getContentPane().add(g);

        JPanel Pan=new JPanel(null); 
        Pan.setLocation(0,0); 
        Pan.setSize(400,300); 
        JComboBox box=new JComboBox(); 
        box.setBounds(10,10,100,30); 

        Connection connDB = null;
        try
        {
            //建立驅動程式,連結odbc至Microsoft Access
         Class.forName("net.ucanaccess.jdbc.UcanaccessDriver");
        }catch(ClassNotFoundException e)
        {
            System.out.println("Driver loading failed!");
        }  
        //連結資料庫
        connDB = DriverManager.getConnection("jdbc:ucanaccess://f:/text.mdb");
        //SQL共有 INSERT、SELECT、UPDATE、DELETE,以下分別列舉
        Statement st = connDB.createStatement();        
        st.execute("SELECT * FROM 文章 where 識別碼=228");
        ResultSet rs = st.getResultSet();
        while(rs.next())
        {
        content.setText(rs.getString("內容"));
        box.addItem(rs.getString("識別碼"));
        }   
        Pan.add(box); 

        f.getContentPane().add(Pan); 
}


當宣告  JScrollPane g = new JScrollPane(content);  之後,物件g就會內嵌物件content並在畫面上顯示,因此如果要宣告物件的在畫面上的大小,就應該要用JScrollPane的方法來設定,也就是用JScrollPane的setBounds來設定,千萬不要用JTextArea的setBounds來設定,否則會導致捲軸無法使用。



2011.11.25 補充

讓程式讀取專案內資料夾的檔案

connDB = DriverManager.getConnection("jdbc:ucanaccess://bin/data/text.mdb");
(使用相對路徑)

沒有留言:

張貼留言