设为首页 加入收藏

TOP

DB2数据库、触发器、存储过程、JAVA数据库链接(JDBC)(一)
2014-11-24 02:45:02 来源: 作者: 【 】 浏览:6
Tags:DB2 数据库 触发器 存储 过程 JAVA 链接 JDBC

触发器

建一个触发器,应包含以下部分:

触发器名字

触发器触发事件: insert,delete,update

激活时间: before,after

粒度: for each statement,for each row

过渡变量:

old row:表示触发事件之前被修改的值:

new row表示触发事件之后被修改的值

old table表示触发事件之前全部被修改行的一个只读假想表

new table表示触发事件之后全部被修改行的一个假想表

触发条件: 由WHEN开始,可包含一个或多个谓词,可包含过渡变量和子查询

触发体: 由一个或多个SQL语句组成

例:

CREATE TRIGGER REORDER

AFTER UPDATE OF ON_HAND, MAX_STOCKED ON PARTS

REFERENCING NEW AS N_ROW

FOR EACH ROW MODE DB2SQL

WHEN (N_ROW.ON_HAND < 0.10 * N_ROW.MAX_STOCKED

AND N_ROW.ORDER_PENDING = 'N')

BEGIN ATOMIC

VALUES(ISSUE_SHIP_REQUEST(N_ROW.MAX_STOCKED -

N_ROW.ON_HAND,

N_ROW.PARTNO));

UPDATE PARTS SET PARTS.ORDER_PENDING = 'Y'

WHERE PARTS.PARTNO = N_ROW.PARTNO;

END

存储过程

存储过程主要通过”Stored Procedure Builder”来建立,

(一)对存储过程的调用分三部分:

1.连接(与数据库建立连接)

Class.forName("COM.ibm.db2.jdbc.net.DB2Driver").newInstance();

Connection con=DriverManager.getConnection(url,user,password);

2。注册输出参数

cs.registerOutParameter (3, Types.INTEGER);

3。调用存储过程:

CallableStatement cs=con.prepareCall("{call store_name(参数,参数,参数)}");

(二)调用举例:

import java.net.URL;

import java.sql.*;

class test2

{

public static void main(String args[])

{

String url = "jdbc:db2://wellhope/sample";

String user="db2admin";

String password="db2admin";

try

{

Class.forName("COM.ibm.db2.jdbc.net.DB2Driver").newInstance();

//与数据库建立连接

Connection con=DriverManager.getConnection(url,user,password);

checkForWarning(con.getWarnings());

DatabaseMetaData dma=con.getMetaData();

String str="This is a string";

//int hashcode=str.hashCode();

//System.out.println("Hashcode "+hashcode);

//创建Statement对象,用于执行SQL语句

Statement stmt=con.createStatement();

//创建CallableStatement对象,用于执行存储过程

CallableStatement cs=con.prepareCall("{call PRO_YHDL1( , , )}");

//注册输出参数

cs.registerOutParameter (3, Types.INTEGER);

int result = 0;

cs.setString(1,"123");

cs.setString(2,"123");

cs.execute();

result = cs.getInt (3);

dispResultSet(result);

cs.close();

con.close();

}

catch(SQLException ex)

{

System.out.println(" * * * SQLException caught * * * ");

while(ex!=null)

{

System.out.println("SQLState: "+ex.getSQLState());

System.out.println("Message: "+ex.getMessage());

System.out.println("Vendor: "+ex.getErrorCode());

ex=ex.getNextException();

System.out.println("");

}

}

catch(java.lang.Exception ex)

{

ex.printStackTrace();

}

}

(三)存储过程举例:

Pro_yhdl1是一个存储过程,它的功能是从数据库表YHDL中取出PWD:

import java.sql.*;

public class Pro_yhdl1

{

public static void pro_yhdl1 ( String m_id,

String m_pwd,

int[] result ) throws SQLException, Exception

{

// Get connection to the database

Connection con = DriverManager.getConnection("jdbc:default:connection");

首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇mongodb vs mysql 下一篇DB2自动生成模式中所有表的import..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: