1. 程式人生 > >Java 使用 ucanaccess 連線Access資料庫

Java 使用 ucanaccess 連線Access資料庫

//首先需要新增 ucanaccess 的jar包
//ucanaccess下載–>(ucanaccess的jar包下載地址)
//ucanaccess官網–>(ucanaccess官網)
//然後引入 ucanaccess 的 jar 包
//可以只引入核心 ucanaccess 的 jar 包,建議全部引入



package com.xu.access;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;

public class Access {

	public static void main(String[] args) throws Exception {

		Class.forName("net.ucanaccess.jdbc.UcanaccessDriver");//這個驅動的地址不要改
		Connection con=DriverManager.getConnection("jdbc:ucanaccess://G:\\Access\\bookmng.mdb","","");
		//DriverManager.getConnection("jdbc:ucanaccess:// Access的相對/絕對路徑","不用填寫","不用填寫");
		//只依據自己的實際情況更改 G:\\Access\\bookmng.mdb 即你的Access檔案(如text.mdb) 的絕對路徑或相對路徑
		//後面的兩個引數可以不用填寫
		//除了上面的兩步下面的操作和 MySQL Oracle 的基本一樣

		//************************************************************************		
		//************************************************************************
		//**1.操作資料庫方法一:使用Statement物件**
		//如果你是使用此方法在專案中,可以將這些方法封裝起來。(請逐一測試這些方法由於每次操作都關閉了連線,如果同時測試這些方法會報錯)

		//建立 Statement物件
		Statement stmt=con.createStatement();

		//1.1查詢資料(使用ResultSet接收資料庫查詢結果)
		ResultSet rs=stmt.executeQuery("select * from test");
		while(rs.next()){           
			System.out.println(rs.getString("name"));
		}	  
		//在每一個對於資料庫的操作完成之後都要關閉Statement物件
		stmt.close();
		//在每一個對於資料庫的操作完成之後都要關閉Connection物件
		con.close();
		
		//1.2新增資料(增、刪、改操作資料可以都使用executeUpdate()這個方法)
		//返回一個int型別結果,表示受影響行數,如果結果小於或者等於0,則表示失敗
		int add=stmt.executeUpdate("insert into test(name,age) values('王五',20)");
		if(add>0){
			System.out.println("新增成功!!!");
		}else{
			System.out.println("新增失敗!!!");
		}
		//在每一個對於資料庫的操作完成之後都要關閉Statement物件
		stmt.close();
		//在每一個對於資料庫的操作完成之後都要關閉Connection物件
		con.close();
		
		//1.3刪除資料(增、刪、改操作資料可以都使用executeUpdate()這個方法)
		//返回一個int型別結果,表示受影響行數,如果結果小於或者等於0,則表示失敗
		int del=stmt.executeUpdate("delete test where name='王五'");
		if(del>0){
			System.out.println("刪除成功!!!");
		}else{
			System.out.println("刪除失敗!!!");
		}
		//在每一個對於資料庫的操作完成之後都要關閉Statement物件
		stmt.close();
		//在每一個對於資料庫的操作完成之後都要關閉Connection物件
		con.close();
		
		//1.4修改資料(增、刪、改操作資料可以都使用executeUpdate()這個方法)
		//返回一個int型別結果,表示受影響行數,如果結果小於或者等於0,則表示失敗
		int upd=stmt.executeUpdate("update test set name='趙四' where name='王五'");
		if(upd>0){
			System.out.println("修改成功!!!");
		}else{
			System.out.println("修改失敗!!!");
		}
		//在每一個對於資料庫的操作完成之後都要關閉Statement物件
		stmt.close();
		//在每一個對於資料庫的操作完成之後都要關閉Connection物件
		con.close();
		
		
		
		//************************************************************************		
		//************************************************************************
		//**2.操作資料庫方法二:使用PreparedStatement物件(預編譯可以防止SQL注入)**
		//如果你是使用此方法在專案中,可以將這些方法封裝起來。(請逐一測試這些方法由於每次操作都關閉了連線,如果同時測試這些方法會報錯)

		//2.1查詢資料(使用ResultSet接收資料庫查詢結果)
		PreparedStatement pstmt1=con.prepareStatement("insert into test(name,age) values('王五',20)");
		ResultSet rs2=pstmt1.executeQuery();
		while(rs2.next()){           
			System.out.println(rs2.getString("name"));
		}
		//在每一個對於資料庫的操作完成之後都要關閉Statement物件
		pstmt1.close();
		//在每一個對於資料庫的操作完成之後都要關閉Connection物件
		con.close();
		
		//2.2新增資料(增、刪、改操作資料可以都使用executeUpdate()這個方法)
		//返回一個int型別結果,表示受影響行數,如果結果小於或者等於0,則表示失敗
		PreparedStatement pstmt2=con.prepareStatement("insert into test(name,age) values('王五',20)");
		int add2=pstmt2.executeUpdate();
		if(add2>0){
			System.out.println("新增成功!!!");
		}else{
			System.out.println("新增失敗!!!");
		}
		//在每一個對於資料庫的操作完成之後都要關閉Statement物件
		pstmt2.close();
		//在每一個對於資料庫的操作完成之後都要關閉Connection物件
		con.close();
		
		//1.3刪除資料(增、刪、改操作資料可以都使用executeUpdate()這個方法)
		//返回一個int型別結果,表示受影響行數,如果結果小於或者等於0,則表示失敗
		PreparedStatement pstmt3=con.prepareStatement("delete test where name='王五'");
		int del2=pstmt3.executeUpdate();
		if(del2>0){
			System.out.println("刪除成功!!!");
		}else{
			System.out.println("刪除失敗!!!");
		}
		//在每一個對於資料庫的操作完成之後都要關閉Statement物件
		pstmt3.close();
		//在每一個對於資料庫的操作完成之後都要關閉Connection物件
		con.close();
		
		//1.4修改資料(增、刪、改操作資料可以都使用executeUpdate()這個方法)
		//返回一個int型別結果,表示受影響行數,如果結果小於或者等於0,則表示失敗
		PreparedStatement pstmt4=con.prepareStatement("update test set name='趙四' where name='王五'");
		int upd2=pstmt4.executeUpdate();
		if(upd2>0){
			System.out.println("修改成功!!!");
		}else{
			System.out.println("修改失敗!!!");
		}
		//在每一個對於資料庫的操作完成之後都要關閉Statement物件
		pstmt4.close();
		//在每一個對於資料庫的操作完成之後都要關閉Connection物件
		con.close();

	}
}

//UCanAccess 介紹


//UCanAccess是一個Microsoft Access的開源JDBC驅動實現
//特性:
//1.支援 Access 2000、2003、2007、2010 及後續高版本
//2.支援 SELECT, INSERT,UPDATE,DELETE 語句。 事務和savepoints。
//3.支援資料型別:YESNO,BYTE,INTEGER,LONG,SINGLE,DOUBLE,NUMERIC,CURRENCY,COUNTER,TEXT,OLE,MEMO,GUID,DATETIME。
//4.支援多使用者併發訪問。
//5.支援連線池。
//6.支援ANSI 92 SQL,core SQL-2008。
//7.支援MS Access SQL。
//8.限制:
//9.只支援基本的DDL操作。
//10.較差的多程序訪問支援。

我的 Access 資料庫如下圖----->

 我的 Access 資料庫如圖

下圖是我執行了新增操作的截圖----->

操作結果如圖所示