国产数据库--DM(达梦数据库)

公司简介

武汉华工达梦数据库有限公司(达梦公司)是国家规划布局内重点软件企业。公司成立于2000年11月,得到了国家计委、科技部、信息产业部、总装备部、公安部等中央部委、省市政府的支持扶植。


达梦数据库

达梦数据库管理系统是达梦公司推出的具有完全自主知识产权的高性能数据库管理系统,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为例,
开始–>所有程序–>达梦数据库,如下:

数据库配置助手.png

具体流程见:达梦数据库管理系统安装手册.pdf


基本概念介绍

配置完成后,打开DM管理工具,如下:
DM管理工具.png

进入后,选择刚才实例化的数据库对象,输入口令,登录数据库,出现以下界面:

界面.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、连接数据库示例

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();
        }
    }
    }

首先需要加载达梦的JDBC驱动程序,调用 Class.forName() 方法即可,驱动程序会自动调用 DriverManager的 registerDriver() 方法进行注册。
数据库连接调用DriverManager的 getConnection() 方法 ,该方法需要传入三个参数,分别是数据库连接字符串、用户名和密码。连接成功后即可执行相应sql操作。

详见:DM8程序员手册.pdf 第四章


存储过程

存储过程创建和oracle等相似,集体详见:DM8程序员手册.pdf

在java中调用存储过程如下:

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();
        }
    }
    }

这里调用存储过程需要使用Connection对象的 prepareCall() 方法,传入一个字符串格式为:call 存过名(参数占位符),然后设置入参出参执行即可。

发布了42 篇原创文章 · 获赞 64 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/xch_yang/article/details/103313891