达梦数据库作为国产数据库的领军者,其完善的接口支持是应用开发的关键。JDBC和ODBC作为最主流的数据库连接标准,本文将深入剖析二者在达梦数据库中的实战应用,涵盖基础连接、高级操作及常用框架SpringBoot整合方案。
JDBC (Java Database Connectivity) 是 Java 应用程序与数据库的接口规范,Java 开发程序员通过数据库开发商提供的一套标准程序编程接口,即可方便的跨平台使用数据库。
创建testDm1项目,导入DmJdbcDriver8.jar,驱动jar包可以从达梦数据库安装目录下的drivers\jdbc目录中获取相应的版本,版本后的编号代表JDK版本。
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());
}
}
}
运行结果:
SQL即结构化查询语言(Structured Query Language),是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。
使用PreparedStatement可执行SQL语句,通过create table语句建表,insert语句插入数据,select 语句查询表数据。
运行结果:
创建testDm2项目,同样需要导入DmJdbcDriver8.jar驱动包,不同的是需要在pom.xml中配置jar包的maven坐标。
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
SpringBoot项目配置Mapper接口。
Controller使用Mapper接口进行新增数据和查询数据。
调用http接口http://localhost:8080/userTest的运行结果为:
ODBC 提供访问不同类型的数据库的途径,通过使用 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
--创建项目目录
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
文章
阅读量
获赞