JDBC (Java Database Connectivity) 是 Java 应用程序与数据库的接口规范,旨在让各数据库开发商为 Java 程序员提供标准的数据库应用程序编程接口 (API)。JDBC 定义了一个跨数据库、跨平台的通用 SQL 数据库 API。
DM JDBC 数据库驱动程序是一个能够支持基本 SQL 功能的通用应用程序编程接口,支持一般的 SQL 数据库访问。通过 JDBC 驱动程序,用户可以在应用程序中实现对 DM 数据库的连接与访问,JDBC 驱动程序的主要功能包括:
- 建立与 DM 数据库的连接。
- 转接发送 SQL 语句到数据库。
- 处理并返回语句执行结果。
开发环境搭建
| 软件 |
版本 |
| DM 数据库 |
DM 8.0 及以上版本 |
| JDK |
JDK 8 |
| Eclipse |
2018-12 (4.10.0) |
安装 DM 数据库
请参考 DM 数据库快速上手指南。
数据库安装过程中,请勾选创建 BOOKSHOP、DMHR 示例库,作为数据库模拟环境,如下图所示:

安装 Java 开发工具包–JDK
双击安装包进行安装,安装步骤简单,点击【下一步】安装即可。以安装目录 D:\java\jdk1.8.0_111 为例,安装完成如下图所示:

安装成功后需要配置 JDK 环境变量,即将 JDK 安装路径的 bin 路径复制到环境变量 path 里,如下图所示:

环境变量配置成功后,可使用 win+R 打开命令提示符,输入 java -version 命令,可以正常出现 JDK 版本号,即环境变量配置成功,如下图所示:

注意JDK 安装完成后还需配置环境变量,环境变量配置不正确会导致项目启动报错。
因环境变量配置错误导致的常见错误代码如下:
Unable to find a javac compiler; Perhaps JAVA_HOME does not point to the JDK;
|
安装集成开发环境 eclipse
正确配置 Java 环境变量后,eclipse 可正常打开。
数据库连接
准备 DM-JDBC 驱动包
DM JDBC 驱动 jar 包在 DM 安装目录 /dmdbms/drivers/jdbc,如下图所示:

注意DmJdbcDriver16.jar 对应 JDK 6 使用
DmJdbcDriver17.jar 对应 JDK 7 使用
DmJdbcDriver18.jar 对应 JDK 8 使用
请根据开发环境选择合适的 DM JDBC 驱动包
数据库连接示例
DM 数据库扩展连接串的使用
DM JDBC 数据库连接驱动具体位置是 dm.jdbc.driver.DmDriver。
连接串的书写格式有以下两种:
- host、port 不作为连接属性,此时只需输入值即可:
注意
- 若 host 不设置,则默认为‘localhost’。
- 若 port 不设置,则默认为‘5236’。
- 若 host 不设置,则 port 一定不能设。
- 若 user、password 没有单独作为参数传入,则必须在连接属性中传入。
- 若 host 为 ipv6 地址,则应包含在[]中。
示例如下:
- host、port 作为连接属性,此时必须按照下表中说明进行设置,且属性名称大小写敏感。
| 属性名称 |
说明 |
是否必须设置 |
| “host” |
主库地址,包括 IP、localhost 或者配置文件中主库地址, 列表对应的变量名,如 dm_svc.conf 中的“o2000” |
否 |
| “port” |
端口号,服务器登录端口号 |
否 |
连接串格式格式如下:
注意host、port 设置与否,以及在属性串中的位置没有限制。
若 user、password 没有单独作为参数传入,则必须在连接属性中传入。
示例如下:
建议更多连接串属性的使用请参考《DM 程序员手册》-DM 扩展连接属性的使用,手册位于数据库安装路径 /dmdbms/doc 文件夹下。
示例代码
package java_jdbc; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class jdbc_conn { static Connection con = null; static String cname = "dm.jdbc.driver.DmDriver"; static String url = "jdbc:dm://localhost:5236"; static String userid = "SYSDBA"; static String pwd = "SYSDBA"; public static void main(String[] args) { try { Class.forName(cname); con = DriverManager.getConnection(url, userid, pwd); con.setAutoCommit(true); System.out.println("[SUCCESS]conn database"); } catch (Exception e) { System.out.println("[FAIL]conn database:" + e.getMessage()); } } public void disConn(Connection con) throws SQLException { if (con != null) { con.close(); } } }
|
运行结果如下图所示:

开发示例
基本操作示例
基础增删改查示例代码
package java_jdbc; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class jdbc_insert {
static String jdbcString = "dm.jdbc.driver.DmDriver";
static String urlString = "jdbc:dm://localhost:5236";
static String userName = "SYSDBA";
static String password = "SYSDBA";
static Connection conn = null;
static Statement state = null;
static ResultSet rs = null; public static void main(String[] args) { try { System.out.println("Loading JDBC Driver..."); Class.forName(jdbcString); System.out.println("Connecting to DM Server..."); conn = DriverManager.getConnection(urlString, userName, password); state = conn.createStatement();
String sql_insert = "insert into PRODUCTION.PRODUCT_CATEGORY"+ "(name)values('厨艺')"; state.execute(sql_insert); String sql_delete = "delete from PRODUCTION.PRODUCT_CATEGORY "+ "where name = '厨艺'"; state.execute(sql_delete); String sql_update = "update PRODUCTION.PRODUCT_CATEGORY set "+ "name = '国学' where name = '文学'"; String sql_selectAll = "select * from PRODUCTION.PRODUCT_CATEGORY"; rs = state.executeQuery(sql_selectAll); displayResultSet(rs);
state.executeUpdate(sql_update); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } finally { try { rs.close(); state.close(); conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } public static void displayResultSet(ResultSet rs) throws SQLException{ while (rs.next()) { int i=1; Object id = rs.getObject(i++); Object name = rs.getObject(i++); System.out.println(id+" "+name); } } }
|
运行示例截图
运行前数据库数据如下图所示:

运行后控制台输出结果如下图所示:

运行后数据库数据如下图所示:

绑定变量示例
绑定参数示例代码
package java_jdbc; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.SQLException; public class jdbc_prepareStatement{ static String jdbcString = "dm.jdbc.driver.DmDriver"; static String urlString = "jdbc:dm://localhost:5236"; static String userName = "SYSDBA"; static String password = "SYSDBA"; static Connection conn = null; static PreparedStatement pstate = null; public static void main(String[] args) { try { System.out.println("Loading JDBC Driver..."); Class.forName(jdbcString); System.out.println("Connecting to DM Server..."); conn = DriverManager.getConnection(urlString, userName, password);
String sql_updateNameById = "update PRODUCTION.PRODUCT_CATEGORY "+ "set name = ? where PRODUCT_CATEGORYID = ? "; pstate = conn.prepareStatement(sql_updateNameById); pstate.setString(1, "魔幻"); pstate.setInt(2, 3); pstate.executeUpdate();
} catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } finally { try { pstate.close(); conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } }
|
运行示例截图
运行后控制台输出如下图所示:

运行后数据库截图如下图所示:

大字段操作示例
大字段操作示例代码
- 创建需要操作的含大字段类型的数据表。
CREATE TABLE "PRODUCTION"."TEST_BIG_DATE" ( "id" INT IDENTITY(1, 1) NOT NULL, "photo" IMAGE, "describe" BLOB, "txt" CLOB);
|
- 在 D 盘根目录下,创建
DM8 特点.jpg、达梦产品简介.txt 两个文件,作为大字段存储,如下图所示:

- 插入大字段关键代码。
package java_jdbc; import java.io.BufferedInputStream; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.UnsupportedEncodingException; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.SQLException; public class jdbc_operate_bigDate{ static String jdbcString = "dm.jdbc.driver.DmDriver"; static String urlString = "jdbc:dm://localhost:5236"; static String userName = "SYSDBA"; static String password = "SYSDBA"; static Connection conn = null; static PreparedStatement pstate = null; public static void main(String[] args) { try { System.out.println("Loading JDBC Driver..."); Class.forName(jdbcString); System.out.println("Connecting to DM Server..."); conn = DriverManager.getConnection(urlString, userName, password); String sql_insert = "INSERT INTO production.TEST_BIG_DATE (\"photo\"," + "\"describe\",\"txt\")VALUES(?,?,?);"; pstate = conn.prepareStatement(sql_insert); String filePath = "D:\\DM8特点.jpg"; File file = new File(filePath); String filePath2 = "D:\\达梦产品简介.txt"; File file2 = new File(filePath2); InputStream in = new BufferedInputStream(new FileInputStream(file)); InputStream in2 = new BufferedInputStream(new FileInputStream(file)); BufferedReader reader = new BufferedReader( new InputStreamReader(new FileInputStream(file2),"UTF-8")); 「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」 【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
|