通常,我們在使用資料庫一般都首選mysql
但是,今天我將介紹一款能夠嵌入到java程式中的資料庫,它能隨著java工程移動而移動,不像mysql那樣,在不同的機器上必須要改配置和重新匯入一遍匯入資料。
- 首先,進入h2的 官網, 選擇All Platforms版本進行下載 在你的目錄下會得到這麼一個檔案
h2/bin
目錄下
有一個h2-*.jar,在命令列下執行java -jar h2-1.4.197.jar
它會在瀏覽器上自動開啟一個h2資料庫的管理頁面
- 在最上方可以選擇語言
- JDBC URL:
jdbc:h2:
後面跟著的是資料庫檔案所在的本地絕對路徑名, 也就是cc
資料庫在桌面 - User Name: 當前資料庫所屬的使用者名稱
- Password: 使用者密碼
點選Connect連線成功, 這時候,桌面會生成一個資料庫檔案:
cc.mv.db
這就是我們的h2資料庫檔案
在資料庫管理頁面上的寫上建標語句, 並點選執行, 執行成功
如果出現錯誤資訊報錯了話, 會在cc.mv.db
所在的目錄生成一個cc.trace.db
檔案, 這個檔案是專門用來存放錯誤日誌的
開啟看一下: 裡面報的都是一些java錯誤日誌
在瀏覽器中對h2資料庫進行資料操作的話,會沒有程式碼提示,這非常的不方便。所以我推薦使用一個資料庫視覺化連線工具 -> dbeaver 這是免費且跨平臺的工具,自行下載安裝開啟dbeaver,在連線選項中找到h2 -> Embedded
- 資料庫/模式:h2資料庫檔案的路徑
- 使用者名稱:資料庫的使用者名稱
- 密碼:資料庫的密碼
進入編輯驅動設定,我們需要新增一個驅動包,我們刪除原來的jar包,將我們之前bin目錄下的h2-*.jar新增進去, 點選下一步, 完成,這時候,我們已經連線成功了。
注意,h2資料庫只能擁有一個連線,不能有多個連線,所以我們在使用dbeaver連線h2資料庫時,必須關掉控制檯上讓瀏覽器執行的連線。
public下的users表就是我們剛剛建立的, 來插入幾條資料。
在工具欄下找到SQL編輯器 選中所有資料,按ctrl+enter, 執行所有程式碼 這時候,資料已經有了
我們來將h2資料卡應用到java程式中,首先,關閉dbeaver的連線,當有其它程式在對當前資料庫進行操作時,你是不能對它進行操作的
將cc.mv.db複製到java工程的db資料夾下,並匯入h2資料庫的驅動包h2-*.jar
cc.trace.db是錯誤日誌資訊,當java程式出錯是,會在cc.mv.db所在的資料夾下生成 - 使用jdbc連線
package cn.java2016.demo1;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import org.h2.tools.Server;
public class H2DatabaseDemo
{
private static String driver = "org.h2.Driver"; // h2資料庫驅動類
private static String url = "jdbc:h2:./db/cc"; // cc資料庫所在目錄及資料庫名
private static String user = "root"; // 資料庫使用者名稱
private static String password = "root"; // 資料庫密碼
public static void main(String[] args) throws SQLException, ClassNotFoundException
{
Server server = Server.createTcpServer().start();
Class.forName(driver);
Connection conn = DriverManager.getConnection(url, user, password);
Statement stat = conn.createStatement();
ResultSet resultSet = stat.executeQuery("SELECT * FROM users;");
while (resultSet.next())
{
System.out.println(resultSet.getObject(1) + " : " + resultSet.getObject(2) + " : " + resultSet.getObject(3));
}
resultSet.close();
stat.close();
conn.close();
server.stop(); // 關閉h2服務
}
}
複製程式碼
執行java程式,我們已經將資料取出來了