國產數據庫--DM(達夢數據庫)

達夢數據庫管理系統是達夢公司推出的具有完全自主知識產權的高性能數據庫管理系統,DM7是達夢公司在總結DM系列產品研發與應用經驗的基礎之上設計的新一代數據庫產品,吸收主流數據庫產品的優點。眾多的企業級特性的實現使得DM7完全能夠滿足大、中型企業以及金融、電信等核心業務系統的需要,是理想的企業級數據管理和分析平臺。

官網:http://www.dameng.com/pro.aspx


收費說明

開發版可免費使用一年(根據下載使用的版本發佈編譯日期算起),到期後需要購買正式版,購買價格需聯繫廠家。


安裝及配置

1. 安裝

下載地址: http://www.dameng.com/down.aspx?TypeId=11&FId=t14:11:14
安裝文檔:達夢數據庫管理系統安裝手冊.pdf

2. 實例化

安裝後需要實例化數據庫,需要用到數據庫配置助手,以Windows為例,
開始-->所有程序-->達夢數據庫,如下:

國產數據庫--DM(達夢數據庫)

數據庫配置助手.png


具體流程見:達夢數據庫管理系統安裝手冊.pdf


基本概念介紹

配置完成後,打開DM管理工具,如下:


國產數據庫--DM(達夢數據庫)

DM管理工具.png


進入後,選擇剛才實例化的數據庫對象,輸入口令,登錄數據庫,出現以下界面:

國產數據庫--DM(達夢數據庫)

界面.png


這裡主要簡單介紹以下幾個重要的概念:數據庫、實例、用戶、表空間、模式、表、角色、數據文件。

1. 數據庫

數據存儲的物理介質。廣義上講任何存儲數據的物理介質都可叫著數據庫,例如一個word文檔。但實際上,我們說數據庫一般是指像MySQL,ORACLE, HBASE等之類的軟件系統。這些系統除了提供數據的存儲外,還提供一整套相關的工具或接口對存儲的數據進行管理。達夢數據庫就是這樣的一種系統。

2. 數據庫實例

已實例化可存儲數據的倉庫。達夢數據庫一個實例就只能掛一個數據庫(即一個實例就是一個數據庫),如果想建多個數據庫,則需配置啟動相應數量的實例。達夢的每個實例有一系列的後臺進程和內存結構,這些是相互獨立的。

3. 用戶

達夢數據庫用戶是建在實例下的,因為實例相互獨立,所有達夢數據庫不同的實例下可以有相同的用戶名。另外,在達夢數據庫中通過create user語句創建用戶時,會同時創建一個同名的“模式”。也可以通過create schema語句單獨創建模式(特別注意:在Oracle中,用戶與schema是一一對應的,不能單獨創建模式,要想創建模式得需通過創建一個同名用戶來實現),並授權給某個已存在的用戶,因此在達夢數據庫中用戶與模式是1:N的關係。(注:如果先通過create schema創建了模式,再通過create user創建同名用戶,不能創建成功。)

4. 表空間

是一個用來管理數據存儲的概念,表空間只是和數據文件(ORA或者DBF文件)發生關係,數據文件是物理的,一個表空間可以包含多個數據文件,而一個數據文件只能隸屬一個表空間。可以將表空間理解為對應一塊物理存儲區,專門用來存儲數據文件。實例化達夢數據庫時,默認會創建MAIN、ROLL、SYSTEM、TEAM及HMAIN五個表空間。ROLL、SYSTEM、TEAM表空間系統自行維護,用戶所建表(如果未指定存放表空間的話)默認放在MAIN表空間。用戶也可自定義表空間,然後在創建用戶時指定為默認表空間;也可以在建表時通過加"tablespace SpaceName"語句動態指定該表的存儲表空間。

5. 模式(schema)

  • 一個用戶一般對應一個schema,該用戶的schema名等於用戶名,並作為該用戶缺省schema;
  • 一個用戶還可以使用其他的schema(Oracle數據庫也可通過權限管理實現訪問其他schema);
  • 創建模式不指定用戶時,該模式默認為SYSDBA擁有;
  • 在同一模式下不能存在同名對象,但在不同模式中的對象名稱可以相同;
  • 用戶可以直接訪問同名模式對象,但如果要要訪問其他模式對象,則必須具有對象權限;
  • 當用戶要訪問其他模式對象時,必須附加模式名作後綴(schema.table);
    用戶是用來連接數據庫對象,而模式是用來創建及管理對象的。

6. 表

在達夢數據庫中,一個表只能屬於一個表空間。

7. 角色

在達夢數據庫中,每個用戶都有角色。它決定了該用戶有什麼權限,比如DBA,擁有最高權限。補充說明一點是,實例化的達夢數據庫默認有3種角色:DBA, PUBLIC,RESOURCE。新建的用戶只擁有PUBLIC角色,該角色幾乎做不了什麼,因此一般新建用戶後,需要單獨對他(她)進行授權。

8. 數據文件

數據的物理載體。


數據庫操作

詳見:DM8 SQL語言使用手冊.pdf


IDEA中使用JDBC連接數據庫

1、下載JDBC驅動;

2、在IDEA中新建項目,將上一步下載的JDBC的jar包複製到lib項目下,並添加至項目

3、連接數據庫示例

<code>package tools;
import java.sql.*;

public class baseDao {
public static void main(String[] args) {
String urlString = "jdbc:dm://LOCALHOST:5236/LOCALHOST";
String userName = "用戶名";
String password ="密碼";
Connection conn = null;
try {
System.out.println("Loading JDBC Driver...");
// 加載 JDBC驅動程序
Class.forName("dm.jdbc.driver.DmDriver");
System.out.println("Connecting to DM Server...");
// 連接 DM 數據庫
conn = DriverManager.getConnection(urlString, userName, password);
System.out.print("連接成功");
//sql查詢
String sql = "SELECT * FROM mes_dept";
Statement stmt = conn.createStatement();
// 執行查詢
ResultSet rs = stmt.executeQuery(sql);
while (rs.next()){
System.out.print(rs.getString(2));
}

} catch (ClassNotFoundException e) {
try {
throw new SQLException("Load JDBC Driver Error : " + e.getMessage());
} catch (SQLException e1) {
e1.printStackTrace();
}

} catch (SQLException e) {
e.printStackTrace();
}
}
}

/<code>

首先需要加載達夢的JDBC驅動程序,調用 Class.forName() 方法即可,驅動程序會自動調用 DriverManager的 registerDriver() 方法進行註冊。
數據庫連接調用DriverManager的 getConnection() 方法 ,該方法需要傳入三個參數,分別是數據庫連接字符串、用戶名和密碼。連接成功後即可執行相應sql操作。

詳見:DM8程序員手冊.pdf 第四章


存儲過程

存儲過程創建和oracle等相似,集體詳見:DM8程序員手冊.pdf

在java中調用存儲過程如下:

<code>package tools;
import java.sql.*;

public class baseDao {
public static void main(String[] args) {
String urlString = "jdbc:dm://LOCALHOST:5236/LOCALHOST";
String userName = "用戶名";
String password ="密碼";
Connection conn = null;
try {
System.out.println("Loading JDBC Driver...");
// 加載 JDBC驅動程序
Class.forName("dm.jdbc.driver.DmDriver");

System.out.println("Connecting to DM Server...");
// 連接 DM 數據庫
conn = DriverManager.getConnection(urlString, userName, password);
System.out.print("連接成功");

CallableStatement cstmt = conn.prepareCall("call p1(?, ?)");
cstmt.setInt(1, 1);
cstmt.registerOutParameter(2, Types.VARCHAR);
cstmt.executeUpdate();
String x = cstmt.getString(2);
System.out.println(x);
} catch (ClassNotFoundException e) {
try {
throw new SQLException("Load JDBC Driver Error : " + e.getMessage());
} catch (SQLException e1) {
e1.printStackTrace();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}

/<code>

這裡調用存儲過程需要使用Connection對象的 prepareCall() 方法,傳入一個字符串格式為:call 存過名(參數佔位符),然後設置入參出參執行即可。


分享到:


相關文章: