第1关:JDBC程序设计

news2024/11/25 11:33:41

第1关:JDBC程序设计

    • 任务描述
    • 相关知识
    • JDBC程序设计
    • JDBC主要功能
    • JDBC主要接口和函数
    • JDBC应用程序开发实例
    • 编程要求
    • 代码参考

任务描述

本关任务:使用 JDBC 往表中插入数据。

相关知识

为了完成本关任务,你需要掌握:
1.JDBC 主要功能;
2.JDBC 主要接口和函数;
3.如何使用 JDBC 进行应用程序开发。

JDBC程序设计

Java 是当前最广泛使用的编程语言之一,为便于 Java 应用访问和操作 DM8 数据库,DM8 也支持 JDBC 编程接口。Java 应用可借助 JDBC 驱动,使用 Java 语言开发应用系统。

JDBC主要功能

JDBC(Java DataBase Connectivity)是 Java 应用程序连接和操作关系型数据库的应用程序接口。其由一组规范的类和接口组成,通过调用类和接口所提供的方法,可访问和操作不同的关系型数据库系统。
DM8 遵循 JDBC 标准接口规范,提供了 DM JDBC 驱动程序,使得 Java 程序员可以通过标准的 JDBC 编程接口进行创建数据库连接、执行 SQL 语句、检索结果集、访问数据库元数据等操作,从而开发基于 DM8 数据库的应用程序,JDBC 体系结构如下图所示。
,

JDBC主要接口和函数

由于 DM JDBC 驱动遵照 JDBC 标准规范设计与开发,因此 DM ODBC 接口提供的函数与标准 JDBC 一致。JDBC 接口函数较多,下表仅列出了 DM JDBC 主要接口和函数,读者在开发基于 DM JDBC 应用程序和也可参阅标准 JDBC 编程接口。

,

,

JDBC应用程序开发实例

1.安装 DM JDBC 驱动

JDBC 驱动包(DmJdbcDriver18.jar)位于达梦安装目录的 drivers/jdbc/目录下,将其复制到 $JAVA_HOME/jre/lib/ext 目录下,即可编译运行达梦 JDBC 程序。

2.DM JDBC代码编写流程

由于 DM JDBC 接口遵循标准 JDBC 规范,因此,基于 DM JDBC 进行程序开发流程与标准 JDBC 开发流程一致,大致流程如下图所示。
,

1)建立数据库连接,获得 java.sql.Connection 对象。利用 DriverManager 或者数据源来建立同数据库的连接。

2)创建 Statement 等对象。建立数据库连接后,利用连接对象创建 java.sql.Statement 对象,也可创建 java.sql.PreparedStatement 或 java.sql.CallableStatement 对象。

3)数据操作。创建完 Statement 对象后,即可使用该对象执行 SQL 语句,进行数据操作。数据操作大致可分为两种类型,一种是更新操作,例如更新数据库、删除一行、创建一个新表等;另一种是查询操作,执行完查询之后,得到一个 java.sql.ResultSet 对象,可以操作该对象来获得指定列的信息、读取指定行的某一列的值。

4)释放资源。对数据操作完成之后,用户需要释放系统资源,主要是关闭结果集、关闭语句对象,释放连接。当然,这些动作也可以由 JDBC 驱动程序自动执行,但由于 Java 语言的特点,该过程较慢(需要等到 Java 进行垃圾回收时进行),容易出现意想不到的问题。

3.DM JDBC代码编写实例

【例1】 基于 DM JDBC 接口编写代码,要求向 DMHR.EMPLOYEE 员工表中插入一条员工信息

1007"马德化","340102196202303001","madehuar@dameng.com", "15312377345","2012-02-25",42, 3290,0,1004,104

根据例 1 需求,程序实现过程如下。

1)建立数据库连接

本例中,定义了 loadJdbcDriver 和 connect 函数,分别完成驱动程序加载和数据库连接。在 loadJdbcDriver 函数中调用 forClass 用于加载 DM JDBC 驱动,在 connect 函数中调用 DriverManager.getConnection 创建数据库连接对象。

2)创建 Statement 对象

本例定义了 insertTable 函数完成数据插入操作。在该函数中调用数据库连接对象的 createStatement() 方法完成 Statement 对象的创建。

3)数据操作

查询和修改员工表数据时,定义需要执行的 SQL 语句字符串。同时,使用数据库连接对象的 prepareStatement(sql) 来创建 PreparedStatement 对象;然后,设置 SQL 语句相关参数;最后调用 PreparedStatement 对象的 executeUpdate()执行 SQL 语句。

4)释放资源

调用数据库连接对象的 close 方法即可关闭当前数据库连接。
参考代码如下所示。

import java.awt.Color;
……
public class BasicApp {
    String jdbcString = "dm.jdbc.driver.DmDriver";// 定义 DM JDBC 驱动串
    String urlString = "jdbc:dm://localhost:5236";// 定义 DM URL 连接串
    String userName = "DMHR";// 定义连接用户名
    String password = "dameng123";// 定义连接用户口令
    Connection conn = null; // 定义连接对象
    /* 加载 JDBC 驱动程序*/
    public void loadJdbcDriver() throws SQLException {
        try {
                System.out.println("Loading JDBC Driver...");
                // 加载 JDBC 驱动程序
                Class.forName(jdbcString);
            } catch (ClassNotFoundException e) {
                    throw new SQLException("Load JDBC Driver Error : " + e.getMessage());
                } catch (Exception ex) {                    
                        throw new SQLException("Load JDBC Driver Error : "+ ex.getMessage());
                    }
    }
    /* 连接 DM 数据库 */
    public void connect() throws SQLException {
    try {
        System.out.println("Connecting to DM Server...");
        // 连接 DM 数据库
        conn = DriverManager.getConnection(urlString, userName, password);
        } catch (SQLException e) {
            throw new SQLException("Connect to DM Server Error : "+ e.getMessage());
        }
    }
    /* 关闭连接*/
    public void disConnect() throws SQLException {
        try {
            // 关闭连接
            conn.close();
        } catch (SQLException e) {
            throw new SQLException("close connection error : " + e.getMessage());
        }
    }
    /* 向员工表中插入数据*/
    public void insertTable() throws SQLException {
        // 插入数据语句
        String sql = "INSERT INTO dmhr.employee(EMPLOYEE_ID,EMPLOYEE_NAME, IDENTITY_CARD, EMAIL,"
        + "PHONE_NUM, HIRE_DATE, JOB_ID, SALARY, COMMISSION_PCT,"
        + "MANAGER_ID, DEPARTMENT_ID) "
        + "VALUES(?,?,?,?,?,?,?,?,?,?,?);";
        PreparedStatement pstmt = conn.prepareStatement(sql); // 创建语句对象
        pstmt.setInt(1, 1007); pstmt.setString(2, "马德化");
        pstmt.setString(3, "340102196202303001");
        pstmt.setString(4, "madehuar@dameng.com");
        pstmt.setString(5, "15312377345"); pstmt.setDate(6, Date.valueOf("2012-02-25"));
        pstmt.setInt(7, 42); pstmt.setInt(8, 3290); pstmt.setInt(9, 0); pstmt.setInt(10, 1004);
        pstmt.setInt(11, 104);
        pstmt.executeUpdate();// 执行语句
        pstmt.close();// 关闭语句
    }
    
    public static void main(String args[]) {
        try {
            BasicApp basicApp = new BasicApp();// 定义类对象
            basicApp.loadJdbcDriver();// 加载驱动程序
            basicApp.connect();// 连接 DM 数据库
            basicApp.insertTable();
            basicApp.disConnect();// 关闭连接
            } catch (SQLException e) {
                System.out.println(e.getMessage());
            }
    }
}

编程要求

根据提示,在右侧编辑器补充代码,使用 JDBC 往 test.tb_class 表中插入数据(1,bob)。

数据库连接信息:
用户名:SYSDBA。
密码:SYSDBA。
url 连接串:“jdbc:dm://localhost:5236”。
test.tb_class 表字段信息:

字段名字段类型
idint
namevarchar(25)

测试说明
平台会对你编写的代码进行测试:

预期输出:

ID          NAME
----------- ----
1           bob

开始你的任务吧,祝你成功!

代码参考

import java.sql.*;
public class DmTest {
	// 请在Begin-End间编写代码
    /********** Begin **********/
    String jdbcString = "dm.jdbc.driver.DmDriver";// 定义 DM JDBC 驱动串
    String urlString = "jdbc:dm://localhost:5236";// 定义 DM URL 连接串
    String userName = "SYSDBA";// 定义连接用户名
    String password = "SYSDBA";// 定义连接用户口令
    Connection conn = null; // 定义连接对象
    /* 加载 JDBC 驱动程序*/
    public void loadJdbcDriver() throws SQLException {
        try {
			// System.out.println("Loading JDBC Driver...");
			// 加载 JDBC 驱动程序
            Class.forName(jdbcString);
        } catch (ClassNotFoundException e) {
            throw new SQLException("Load JDBC Driver Error : " + e.getMessage());
        } catch (Exception ex) {
            throw new SQLException("Load JDBC Driver Error : "+ ex.getMessage());
        }
    }
    /* 连接 DM 数据库 */
    public void connect() throws SQLException {
        try {
			// System.out.println("Connecting to DM Server...");
			// 连接 DM 数据库
            conn = DriverManager.getConnection(urlString, userName, password);
        } catch (SQLException e) {
            throw new SQLException("Connect to DM Server Error : "+ e.getMessage());
        }
    }
    /* 关闭连接*/
    public void disConnect() throws SQLException {
        try {
			// 关闭连接
            conn.close();
        } catch (SQLException e) {
            throw new SQLException("close connection error : " + e.getMessage());
        }
    }
    /* 向员工表中插入数据*/
    public void insertTable() throws SQLException {
		// 插入数据语句
        String sql = "INSERT INTO test.tb_class(id,name) "
                + "VALUES(?,?);";
        PreparedStatement pstmt = conn.prepareStatement(sql); // 创建语句对象
        pstmt.setInt(1, 1);
        pstmt.setString(2, "bob");
        pstmt.executeUpdate();// 执行语句
        pstmt.close();// 关闭语句
    }
    public static void main(String args[]) {
        try {
            DmTest basicApp = new DmTest();// 定义类对象
            basicApp.loadJdbcDriver();// 加载驱动程序
            basicApp.connect();// 连接 DM 数据库
            basicApp.insertTable();
            basicApp.disConnect();// 关闭连接
        } catch (SQLException e) {
            System.out.println(e.getMessage());
        }
    }
/********** End **********/
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/574538.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SM3_CNC,轴组,G代码解析,CNC运动控制

硬件要求: 中型PLC(汇川AM600,禾川HCQ0),且带 SM3_CNC.library 库(3.5.6支持离线仿真) G代码标准: DIN66025 DIN66025-1标准G0 运动定位 G1 线性插补 G2 顺圆插补 G3 …

决策树案例以及决策树可视化

一、案例背景 泰坦尼克号沉没是历史上最臭名昭著的沉船之一。1912年4月15日,在她的处女航中,泰坦尼克号在与冰山相撞后沉没,在2224名乘客和机组人员中造成1502人死亡。在这个案例中,我们要求完成对哪些人可能存活的分析。特别是&…

【C++系列Pn】引用——背刺指针的神秘刺客“吃我一棍”

前言 大家好吖,欢迎来到 YY 滴 C系列 ,热烈欢迎!如标题所示,本章主要内容主要来侃侃“引用”这个刺客!如下就是大纲啦~ 一.引用 1.含义与特点 引用,即取别名。它的最大特点是编译器不会为引用变量而开辟空间…

202313读书笔记|《山居七年》————我只想在广袤璀璨的星河里享受生的鲜活,独自飞,游走

202313读书笔记|《山居七年》————我只想在广袤璀璨的星河里享受生的鲜活,独自飞,游走 《山居七年》 作者张二冬,选择隐士山居是一种很自由随性的生活态度,我觉得这不是普通人可以拥有的,比如我,并未入…

Office project 2007安装

哈喽,大家好。今天一起学习的是project 2007的安装,Microsoft Office project项目管理工具软件,凝集了许多成熟的项目管理现代理论和方法,可以帮助项目管理者实现时间、资源、成本计划、控制。有兴趣的小伙伴也可以来一起试试手。…

xmind思维导图转成禅道测试用例

xmind思维导图用来编写用例胜在效率高,可以快速的理清楚需求。缺点在于没法上传禅道,但是公司有要求每次迭代要有禅道的测试用例。直接写禅道的测试用例的话,又很耗时,效率低下,与提高人效的公司年度战略不符&#xff…

apache虚拟主机头的实现方式

目录 一:基于不同的IP地址 二:基于不同的端口 三:基于不同的域名 一:基于不同的IP地址 步骤一:修改主配置文件 vim /usr/local/apache/conf/httpd.conf 声明监听不同的IP地址的80端口 Listen 192.168.2.20:80 Listen…

ChatGPT工作提效之使用python开发对接百度地图开放平台API的实战方案(批量路线规划、批量获取POI、突破数量有限制、批量地理编码)

ChatGPT工作提效系列文章目录 ChatGPT工作提效系列 ChatGPT工作提效之初探路径独孤九剑遇强则强ChatGPT工作提效之在程序开发中的巧劲和指令(创建MySQL语句、PHP语句、Javascript用法、python的交互)ChatGPT工作提效之生成开发需求和报价单并转为Excel格式ChatGPT工作提效之小…

URLConnection(四)

文章目录 1. 配置客户端请求HTTP首部2. 向服务器写入数据3. URLConnection的安全考虑4. HttpURLConnection 1. 配置客户端请求HTTP首部 HTTP客户端(如浏览器)向服务器发送一个请求行和一个首部,如下: web服务器可以根据这个信息…

Visual Studio 远程调试工具(Remote Debugger)使用方法

一、关于Remote Debugger 当项目在测试环境上有bug,需要运行代码调试一下,这时就需要在测试环境上安装一个调试工具(Remote Debugger),然后在本地运行代码,远程链接到测试环境服务器来调试代码&#xff1b…

算法基础学习笔记——⑦位运算

✨博主:命运之光 ✨专栏:算法基础学习 目录 ✨位运算 ✨操作一 🍓十进制转化成二进制、八进制、十六进制(连除法) 🍓二进制、八进制、十六进制转化成十进制 🍓关于原码,反码&am…

Unity四叉树地图

当使用Unity构建大规模的游戏地图或场景时,使用四叉树数据结构可以提高性能和效率。四叉树是一种基于分割的数据结构,将空间划分为四个相等的子区域,并以递归方式构建树结构。在游戏开发中,四叉树常用于空间分区、碰撞检测和可视化…

Eclipse 教程Ⅱ

Eclipse 修改字符集 默认情况下 Eclipse 字符集为 GBK,但现在很多项目采用的是 UTF-8,这是我们就需要设置我们的 Eclipse 开发环境字符集为 UTF-8, 设置步骤如下: 在菜单栏选择 Window -> Preferences -> General -> W…

python的统计函数库scipy.stats是一个很棒的统计包

描述:在Scipy的模块中,有一个统计的木块——States,其中函数有描述统计(describe)、峰度(kurtosis)、偏度(skew)、众数(mode)、n阶矩。 分布:还有一些分布函数,正泰分布(norm)、对数正态分布(lognorm)、…… 计算:针…

Go语言介绍以及Go语言环境安装

初步介绍: Go 是一个开源的编程语言,它能让构造简单、可靠且高效的软件变得容易。 Go是从2007年末由Robert Griesemer, Rob Pike, Ken Thompson主持开发,后来还加入了Ian Lance Taylor, Russ Cox等人,并最终于2009年11月开源&am…

Manjaro linux 安装svn 并在文件管理器里显示相关图标

需要先安装svn linux版打开终端执行 1 sudo pacman -S svn 安装完成后执行一下 1 svn --version 出现这个就说明svn已经安装完成了,这个时候我们可以执行 1 svn checkout [路径] 就可以检出svn服务器上相关内容了 但是这个有的时候我们打开文件管理器想要看到被…

并发编程的三大特性之原子性

原子性 这个定义是一种规定,描述了Java中的理想就是为了能实现一个操作不能分割,不可中断,一个线程在执行的时候,另一个线程不会去影响他。 Java中的原子性可以理解为多线程操作临界资源,预期的结果和最终的结果一致。…

STM32基本外设超详细44000字教程

GPIO GPIO(General Purpose Input Output)通用输入输出口可配置为8种输入输出模式引脚电平:0V~3.3V,部分引脚可容忍5V输出模式下可控制端口输出高低电平,用以驱动LED、控制蜂鸣器、模拟通信协议输出时序等输入模式下可…

ML | 5 Logistic回归

ML | 5 Logistic回归 文章目录 ML | 5 Logistic回归Logistic回归思想基于Logistic回归和Sigmoid函数分类基于最优化方法的最佳回归系数确定梯度上升法**梯度上升法例子:**梯度下降法 训练算法:使用梯度上升找到最佳参数画出决策边界 训练算法&#xff1a…

本地是如何开启Nginx服务的?

一、window 配置Nginx服务器 1、Nginx下载地址 http://nginx.org/en/download.html 选择一个适合自己的版本 2、下载后直接解压 3、修改Nginx启动端口 配置文件位置:nginx-1.22.0/conf/nginx.conf 默认80,以防端口被重用,改为8056 4&…