注册
达梦应用开发-JDBC接口与ODBC接口
培训园地/ 文章详情 /

达梦应用开发-JDBC接口与ODBC接口

小明 2025/06/26 396 1 0

1 引言

达梦数据库作为国产数据库的领军者,其完善的接口支持是应用开发的关键。JDBC和ODBC作为最主流的数据库连接标准,本文将深入剖析二者在达梦数据库中的实战应用,涵盖基础连接、高级操作及常用框架SpringBoot整合方案。

2 JDBC接口

JDBC (Java Database Connectivity) 是 Java 应用程序与数据库的接口规范,Java 开发程序员通过数据库开发商提供的一套标准程序编程接口,即可方便的跨平台使用数据库。

2.1 不使用框架进行数据库连接

2.1.1 创建项目导入驱动jar包

创建testDm1项目,导入DmJdbcDriver8.jar,驱动jar包可以从达梦数据库安装目录下的drivers\jdbc目录中获取相应的版本,版本后的编号代表JDK版本。
image.png

2.1.2 编写连接代码

package com.dmtest;
import java.sql.Connection;
import java.sql.DriverManager;

public class DmJdbcDemo {
	private static Connection connection = null;
	private static final String DRIVER_CLASS_NAME = "dm.jdbc.driver.DmDriver";
	private static final String URL = "jdbc:dm://127.0.0.1:5236";
	private static final String USER = "SYSDBA";
	private static final String PWD = "Dameng_test";
	public static void main(String[] args) {
		try {
  			//加载驱动
			Class.forName(DRIVER_CLASS_NAME);
			//创建连接
			connection = DriverManager.getConnection(URL, USER, PWD);
			//设置自动提交
			connection.setAutoCommit(true);
			System.out.println("[SUCCESS]connect database");
		} catch (Exception e) {
			System.out.println("[FAIL]connect database:" + e.getMessage());
		}
	}
}

运行结果:
image.png

2.1.3 执行SQL语句

SQL即结构化查询语言(Structured Query Language),是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。
使用PreparedStatement可执行SQL语句,通过create table语句建表,insert语句插入数据,select 语句查询表数据。
image.png
运行结果:
image.png

2.2 使用SpringBoot框架进行数据库连接

2.2.1 创建项目导入驱动jar包

创建testDm2项目,同样需要导入DmJdbcDriver8.jar驱动包,不同的是需要在pom.xml中配置jar包的maven坐标。
image.png

2.2.2 配置项目数据源

SpringBoot项目配置application.yml文件。

server:
  port: 8080
spring:
  datasource:
    url: jdbc:dm://127.0.0.1:5236?schema=SYSDBA
    username: SYSDBA
    password: Dameng_dba1
    driver-class-name: dm.jdbc.driver.DmDriver
    hikari:
      connection-timeout: 30000
      maximum-pool-size: 15
mybatis:
  mapper-locations: classpath:mappers/*.xml
  type-aliases-package: com.example.testdm2.mybatis.entity

2.2.3 执行SQL语句

SpringBoot项目配置Mapper接口。
image.png
Controller使用Mapper接口进行新增数据和查询数据。
image.png
调用http接口http://localhost:8080/userTest的运行结果为:
image.png

3 ODBC接口

3.1 使用ODBC接口连接达梦数据库

ODBC 提供访问不同类型的数据库的途径,通过使用 ODBC接口,应用程序能够使用相同的源代码和各种各样的数据库交互。

3.1.1 ODBC环境安装

将unixODBC-2.3.0.tar.gz安装包上传到Linux服务器,使用tar -zxvf命令解
压后,进行配置及编译安装。
--执行命令

tar -zxvf unixODBC-2.3.0.tar.gz
cd unixODBC-2.3.0/
./configure
make & make install

--查看配置文件位置

odbcinst -j

--配置驱动信息

vim odbcinst.ini
[DM8 ODBC DRIVER]
Dcription=ODBC DRIVER FOR DM8
Driver=/home/dmdba/dmdbms/bin/libdodbc.so

--配置数据源信息

vim odbc.ini
[DM8]
Description = DM ODBC DSN
Driver = DM8 ODBC DRIVER
SERVER = 127.0.0.1
UID = SYSDBA
PWD = Dameng123
TCP_PORT = 5236

--测试ODBC连接

isql dm8 -v

image.png

3.1.2 C++连接示例

--创建项目目录

mkdir dm_odbc_demo && cd dm_odbc_demo

--创建连接文件

vim odbc_conn.c
#include <stdio.h>
#include <stdlib.h>
#include <sql.h>
#include <sqltypes.h>
#include <sqlext.h>
/* 检测返回代码是否为成功标志,当为成功标志返回 TRUE,否则返回 FALSE */
#define RC_SUCCESSFUL(rc) ((rc) == SQL_SUCCESS || (rc) == SQL_SUCCESS_WITH_INFO)
/* 检测返回代码是否为失败标志,当为失败标志返回 TRUE,否则返回 FALSE */
#define RC_NOTSUCCESSFUL(rc) (!(RC_SUCCESSFUL(rc)))
HENV henv;/* 环境句柄 */
HDBC hdbc;/* 连接句柄 */
HSTMT hsmt;/* 语句句柄 */
SQLRETURN sret; /* 返回代码 */
int main(void)
{
    /* 申请一个环境句柄 */
    SQLAllocHandle(SQL_HANDLE_ENV, NULL, &henv);
    /* 设置环境句柄的 ODBC 版本 */
    SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (SQLPOINTER)SQL_OV_ODBC3,
        SQL_IS_INTEGER);
    /* 申请一个连接句柄 */
    SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
    sret = SQLConnect(hdbc, (SQLCHAR *)"dm8", SQL_NTS, (SQLCHAR *)"SYSDBA", SQL_NTS, (SQLCHAR *)"Dameng123", SQL_NTS);
    if (RC_NOTSUCCESSFUL(sret)) {
       /* 连接数据源失败! */
        printf("odbc: fail to connect to server!\n");
        SQLFreeHandle(SQL_HANDLE_DBC, hdbc);
        SQLFreeHandle(SQL_HANDLE_ENV, henv);
        exit(0);
    }
    printf("odbc: connect to server success!\n");

    /* 断开与数据源之间的连接 */
    SQLDisconnect(hdbc);
    /* 释放连接句柄 */
    SQLFreeHandle(SQL_HANDLE_DBC, hdbc);
    /* 释放环境句柄 */
    SQLFreeHandle(SQL_HANDLE_ENV, henv);
    return 0;
} 

--创建编译文件

vim makefile
CC = gcc
includepath = $(DM_HOME)/include
libpath = $(DM_HOME)/bin
vpath = ./
CFLAGS = -I$(includepath) -DDM64 -Wall -g
LINKFLAGS = -L$(libpath) -ldodbc -Wl,-rpath,$(libpath)
object_file1 = odbc_conn.o
final_objects = odbc_conn
all: $(final_objects)
%.o: %.c
        $(CC) -c $(CFLAGS) $< -o $@
odbc_conn: $(object_file1)
        $(CC) -o $@ $< $(LINKFLAGS)
        @echo "编译成功"
.PHONY: clean rebuild
clean:
        @rm -rf $(object_file1) $(final_objects)
        @echo "已清理"
rebuild: clean all

--执行编译命令

Make

--运行代码

./odbc_conn

image.png

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服