通常,我們在使用數據庫一般都首選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程序,我們已經將數據取出來了