java连接mysql执行ddl_Java JDBC 执行 DDL 和 SQLJ 存储过程

本文探讨了利用Java JDBC执行DDL和SQLJ存储过程的方法,指出通过数据库脚本文件执行存在的缺点,如环境依赖、控制难度和结果处理问题。文章提出使用Java JDBC直接执行SQL语句,以解决上述问题,提供了简单的示例代码,详细解释了Statement对象(包括Statement、PreparedStatement和CallableStatement)的用法,并通过两个实例展示了如何执行DDL和SQLJ存储过程,强调了这种方法的灵活性和可控性。
摘要由CSDN通过智能技术生成

Java JDBC 执行 DDL 和 SQLJ 存储过程

李 兆伟 和 蔡 龙军

2011 年 1 月 27 日发布

序言

Java JDBC(Java Data Base Connectivity,Java 数据库连接)是一种用于执行 SQL 语句的 Java API,可以为多种关系数据库提供统一访问接口,它由一组用 Java 语言编写的类和接口组成。JDBC 为数据库应用开发人员、数据库前台工具开发人员提供了一个标准的 API,据此可以构建更高级的工具和接口,使数据库开发人员能够用纯 Java API 编写数据库应用程序。

DDL(Data Definition Language)是指数据定义语句用于定义和管理 SQL 模式、基本表、视图、索引和存储过程等数据库中的对象。

SQLJ 由一系列定义了 SQL 与 Java 之间相互作用的子句和程序扩充组成。SQLJ 是在 Java 编程语言中静态嵌入式 SQL。本文研究的 SQLJ 存储过程特指 DB2 数据库提供的内嵌 SQLJ 存储过程,例如 SQLJ.DB2_INSTALL_JAR 存储过程,它用于创建一个新定义的 JAR 文件到特定的数据库。

本文在系统分析利用数据库脚本文件执行 DDL 和 SQLJ 存储过程缺点的基础上,提出并详细介绍了利用 Java JDBC 执行 DDL 和 SQLJ 存储过程的方法。

方法提出的背景

在 Java 与数据库交互编程过程中,经常遇到这样的场景:需要执行大量的 DDL 语句和 SQLJ 存储过程,并且这些语句之间有着较强的依赖关系。下面是一个这样的例子,SQL 语句中既有多条 DDL 又有对 DB2 内嵌 SQLJ 存储过程的调用。

清单 1. DDL 和 SQLJ 存储过程语句示例-- -- connect to the &database

connect to &database user &user using &password;

-- -- install Stored Procedure

DROP PROCEDURE DB2TOOL.CALLDB2ADVIS;

CALL SQLJ.REMOVE_JAR ('DB2TOOL.CALLDB2ADVIS');

CALL SQLJ.REFRESH_CLASSES();

CALL SQLJ.INSTALL_JAR('file:/home/luwsp.jar', 'DB2TOOL.CALLDB2ADVIS');------------- ①

CALL SQLJ.REFRESH_CLASSES();

-- -- create Stored Procedure

CREATE PROCEDURE DB2TOOL.CALLDB2ADVIS ( INOUT major_version INTEGER,

INOUT minor_version INTEGER,

IN requested_locale VARCHAR(33),

IN xml_input BLOB(32M),

IN xml_filter BLOB(4K),

OUT xml_output BLOB(4K),

OUT xml_message BLOB(64K) )

DYNAMIC RESULT SETS 3

NOT DETERMINISTIC

LANGUAGE Java

EXTERNAL NAME 'DB2TOOL.CALLDB2ADVIS:com.ibm.datatools.ia.luw.CALLDB2ADVIS.cALLDB2ADVIS'

FENCED

THREADSAFE

PARAMETER STYLE JAVA; --------------------------------------------------------- ②

-- -- grant the execution privilege to public

GRANT EXECUTE ON PROCEDURE DB2TOOL.CALLDB2A

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值