常用开发语言连接DM数据库进行数据处理

1 JDBC

1.1 简介

JDBC是是 Java 应用程序与数据库的接口规范,也是企业级应用开发中最广泛的数据库访问方法之一。DM数据库支持JDBC的数据库访问方式。

1.2 使用步骤

  1. 为使用DM数据库的项目导入DM提供的JDBC程序JAR包

  2. 明确DM的JDBC连接串格式

  3. 使用JDBC常规流程连接数据库

1.3 样例代码

package com.dameng;

import java.sql.*;

public class jdbc_conn {
    static Connection conn = null;
    //定义驱动名
    static String driverName = "dm.jdbc.driver.DmDriver";
    //定义DM数据库连接串URL
    static String dm_url = "jdbc:dm://localhost:5236";
    //数据库账号
    static String userid = "SYSDBA";
    //数据库密码
    static String pwd = "SYSDBA";
    //大部分带参数的SQL均建议使用预编译模式提高安全性(防止SQL注入)和性能
    static PreparedStatement ps = null;

    public static void main(String[] args) {
        try {
            //动态加载驱动类
            Class.forName(driverName);
            //根据URL地址、账号和密码
            conn = DriverManager.getConnection(dm_url, userid, pwd);
            //根据实际情况设置是否自动提交(如需要开启多条SQL为同一个事务,则将setAutoCommit设置为false
            conn.setAutoCommit(true);
            //-------------------------------INSERT开始-----------------------------------------------
            //新增数据的insert命令
            String sql_insert_cmd = "insert into TEST.USERINFO(name,sex,birthday)values(?,?,?)";
            //预编译SQL
            ps = conn.prepareStatement(sql_insert_cmd);
            //第1行数据:jc  1   1986-11-28
            ps.setString(1, "jc");
            ps.setInt(2, 1);
            ps.setString(3, "1986-11-28");
            ps.executeUpdate();
    
            //第2行数据:lcy  0   1991-01-17
            ps.setString(1, "lcy");
            ps.setInt(2, 0);
            ps.setString(3, "1991-01-17");
            ps.executeUpdate();
    
            //第3行数据:jzm  1   2016-11-05
            ps.setString(1, "jzm");
            ps.setInt(2, 1);
            ps.setString(3, "2016-11-05");
            ps.executeUpdate();
            //-------------------------------UPDATE开始-----------------------------------------------
            String sql_update_cmd = "update TEST.USERINFO set name=? where name=?";
            ps = conn.prepareStatement(sql_update_cmd);
            ps.setString(1, "jiangchuang");
            ps.setString(2, "jc");
            ps.executeUpdate();
    
            //-------------------------------SELECT开始-----------------------------------------------
            String sql_select_cmd = "select ID,NAME,SEX,BIRTHDAY from TEST.USERINFO WHERE name like ?";
            ps = conn.prepareStatement(sql_select_cmd);
            ps.setString(1, "j%");
            ResultSet resultSet = ps.executeQuery();
    
            while (resultSet.next()) {
                System.out.println(resultSet.getInt("ID") + "\t" + resultSet.getString("NAME") + "\t" + resultSet.getInt("SEX") + "\t" + resultSet.getDate("BIRTHDAY"));
            }
    
            //-------------------------------DELETE开始-----------------------------------------------
            String sql_delete_cmd = "delete from TEST.USERINFO";
            Statement state = conn.createStatement();
            state.execute(sql_delete_cmd);
    
            conn.close();
    
        } catch (Exception e) {
            System.out.println("SQL执行出错:" + e.getMessage());
        }
    }

}

2 ODBC

2.1 简介

ODBC是微软主导制定的一组对数据库访问的标准API,具有一定的使用广泛性。

2.2 使用步骤

2.2.1 下载 unixODBC 和 unixODBC-devel 。

通过阿里云开发者社区下载odbc驱动:https://developer.aliyun.com/packageSearch?word=unixodbc

2.2.2 安装 unixODBC 和 unixODBC-devel。

   rpm -ivh unixODBC-devel-2.3.1-14.el7.x86_64.rpm unixODBC-2.3.1-14.el7.x86_64.rpm

2.2.3 配置ODBC驱动路径

cat > /etc/odbcinst.ini << EOF
[DM8 ODBC DRIVER]
Description = DM ODBC DRIVER FOR DM8
Driver      = /opt/dmdb/dmdbms/bin/libdodbc.so
EOF

注:上面红色字体部分为dm数据库安装目录下的bin目录

2.2.4 配置ODBC数据库源

cat > /etc/odbc.ini << EOF
[dm]
DRIVER = DM8 ODBC DRIVER
SERVER = 192.168.11.139
UID = SYSDBA
PWD = SYSDBA
TCP_PORT = 5236
EOF

2.2.5 通过ODBC数据库源访问DM

2.2.5.1 isql工具测试数据源

确认已经将DM库的bin目录追加到LD_LIBRARY_PATH环境变量

vim ~/.bash_profile
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/opt/dmdb/dmdbms/bin"

source ~/.bash_profile

使用以下命令测试连接到数据库(其中dm为2.2.4配置的数据库服务名)

isql dm
[root@localhost ~]# isql dm
+---------------------------------------+
| Connected!                            |
|                                       |
| sql-statement                         |
| help [tablename]                      |
| quit                                  |
|                                       |
+---------------------------------------+
SQL>

3 .NET

3.1 简介

.NET Data Provider 是 .NET Framework 编程环境下的数据库用户访问数据库的编程接口,用于连接到数据库、执行命令和检索结果。

3.2 使用步骤

  1. 加载驱动

  2. 编写访问数据库的代码

3.3 实战样例

3.3.1 加载驱动

1)添加引用的方式加载驱动dll(DM安装路径drivers\dotNet目录下),如图:

2)引用Dm命名空间,如图:

3.3.2 编写代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Dm;

namespace DmConn
{
    class Program
    {
        static void Main(string[] args)
        {
            try
            {
                // 连接测试
                using (DmConnection conn = new DmConnection("Server=localhost:5236;UserId=SYSDBA;PWD=SYSDBA;"))
                {
                    conn.Open();
                    //-------------------------------INSERT开始-----------------------------------------------
                    //新增数据的insert命令
                    string sql_insert_cmd = "insert into TEST.USERINFO(name,sex,birthday)values(:name,:sex,:birthday)";
                    DmCommand cmd = new DmCommand(sql_insert_cmd, conn);
                    //第1行数据:jc  1   1986-11-28
                    cmd.Parameters.Add(new DmParameter(":name", "jc"));
                    cmd.Parameters.Add(new DmParameter(":sex", 1));
                    cmd.Parameters.Add(new DmParameter(":birthday", "1986-11-28"));
                    cmd.ExecuteNonQuery();

                    //第2行数据:lcy  0   1991-01-17
                    cmd.Parameters.Add(new DmParameter(":name", "lcy"));
                    cmd.Parameters.Add(new DmParameter(":sex", "0"));
                    cmd.Parameters.Add(new DmParameter(":birthday", "1991-01-17"));
                    cmd.ExecuteNonQuery();
    
                    //第3行数据:jzm  1   2016-11-05
                    cmd.Parameters.Add(new DmParameter(":name", "jzm"));
                    cmd.Parameters.Add(new DmParameter(":sex", 1));
                    cmd.Parameters.Add(new DmParameter(":birthday", "2016-11-05"));
                    cmd.ExecuteNonQuery();
    
                    //-------------------------------UPDATE开始-----------------------------------------------
                    string sql_update_cmd = "update TEST.USERINFO set name=:name_new where name=:name";
                    cmd.CommandText = sql_update_cmd;
                    cmd.Parameters.Add(new DmParameter(":name_new", "jiangchuang"));
                    cmd.Parameters.Add(new DmParameter(":name", "jc"));
                    cmd.ExecuteNonQuery();
    
                    //-------------------------------SELECT开始-----------------------------------------------
                    string sql_select_cmd = "select ID,NAME,SEX,BIRTHDAY from TEST.USERINFO WHERE name like :name";
                    cmd.CommandText = sql_select_cmd;
                    cmd.Parameters.Add(new DmParameter(":name", "j%"));
                    var reader = cmd.ExecuteReader();
    
                    while (reader.Read())
                    {
                        Console.WriteLine(reader.GetInt32(0) + "\t" + reader.GetString(1) + "\t" + reader.GetInt32(2) + "\t" + reader.GetDateTime(3));
                    }
                    
                    //-------------------------------DELETE开始-----------------------------------------------
                    string sql_delete_cmd = "delete from TEST.USERINFO";
                    cmd.CommandText = sql_delete_cmd;
                    cmd.Parameters.Clear();
                    cmd.ExecuteNonQuery();
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("数据库连接出错");
                Console.WriteLine(ex.Message);
            }
            Console.ReadKey();
        }
    }

}

达梦技术社区:https://eco.dameng.com/

posted @   大龄骑手兼码农  阅读(542)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示