常用开发语言连接DM数据库进行数据处理
1 JDBC
1.1 简介
JDBC是是 Java 应用程序与数据库的接口规范,也是企业级应用开发中最广泛的数据库访问方法之一。DM数据库支持JDBC的数据库访问方式。
1.2 使用步骤
-
为使用DM数据库的项目导入DM提供的JDBC程序JAR包
-
明确DM的JDBC连接串格式
-
使用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 使用步骤
-
加载驱动
-
编写访问数据库的代码
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/
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律