H2嵌入式數據庫使用


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM