DB2中SQLJ应用示例

示例|应用示例

// 本例展示怎样写用JDBC应用驱动程序存取DB2数据库的SQLJ应用。
// 其中bank为DB2中的数据库,customer为bank中的表
import java.sql.*;
import sqlj.runtime.*;
import sqlj.runtime.ref.*;

#sql iterator App_Cursor1 (String customer_id, String customer_name) ;
#sql iterator App_Cursor2 (String) ;

class App
{

static
{
try
{
// 用 DriverManager 注册驱动程序
Class.forName("COM.ibm.db2.jdbc.app.DB2Driver").newInstance();
}
catch (Exception e)
{
e.printStackTrace();
}
}

public static void main(String argv[])
{
try
{
App_Cursor1 cursor1;
App_Cursor2 cursor2;

String str1 = null;
String str2 = null;
int count1;

Connection con = null;

// URL的格式为:jdbc:db2:数据库名
String url = "jdbc:db2:bank";

DefaultContext ctx = DefaultContext.getDefaultContext();
if (ctx == null) {
try {
if (argv.length == 0) {
// 用默认的用户名和口令连接
con = DriverManager.getConnection(url);
}
else if (argv.length == 2) {
String userid = argv[0];
String passwd = argv[1];

// 用用户提供的用户名和口令连接
con = DriverManager.getConnection(url, userid, passwd);
}
else {
System.out.println(" 用法: java SqljApp [用户名 口令] ");
System.exit(0);
}
con.setAutoCommit(false);
ctx = new DefaultContext(con);
}
catch (SQLException e) {
System.out.println("错误: 不能得到默认内容");
System.err.println(e) ;
System.exit(1);
}

DefaultContext.setDefaultContext(ctx);
}

// 从数据库提取数据
System.out.println("从数据库提取一些数据...");
#sql cursor1 = { SELECT customer_id, customer_name from customer };

// 显示结果集
// cursor1.next() 当无更多的行时返回 false
System.out.println("得到的结果:");
while (cursor1.next()) {
str1 = cursor1.customer_id();
str2 = cursor1.customer_name();

System.out.print (" 客户编号= " + str1);
System.out.print (" 客户姓名= " + str2);
System.out.print (" ");
}
cursor1.close();

// 从数据库中获取客户数
System.out.println(" 获取客户表的行数...");
#sql { SELECT count(*) into :count1 from customer };
System.out.println ("客户表中有 " + count1 + " 行.");

// 更新数据
str1 = " 1";
System.out.println(" 更新数据... ");
#sql { UPDATE customer set customer_name = ´黄亮辉´ where customer_id = :str1 };

// 从数据库中提取更新数据
System.out.println(" 从数据库中提取更新数据...");
#sql cursor2 = { SELECT customer_name from customer where customer_id = :str1 };

// 显示结果集
// cursor2.next() 当无更多行时返回 false
System.out.println("得到的结果:");
while (true) {
#sql { FETCH :cursor2 INTO :str2 };
if (cursor2.endFetch()) break;

System.out.print (" 客户编号= " + str1);
System.out.print (" 客户姓名= " + str2);
System.out.print (" ");
}
cursor2.close();

// 回滚更新
System.out.println(" 回滚更新...");
#sql { ROLLBACK work };
System.out.println("回滚完成.");
}
catch( Exception e )
{
e.printStackTrace();
}
}
} 

时间: 2024-08-03 19:21:35

DB2中SQLJ应用示例的相关文章

在DB2中提高INSERT性能的技巧(1)_DB2

正在看的db2教程是:在DB2中提高INSERT性能的技巧(1).INSERT 处理过程概述 首先让我们快速地看看插入一行时的处理步骤.这些步骤中的每一步都有优化的潜力,对此我们在后面会一一讨论. 在客户机准备 语句.对于动态 SQL,在语句执行前就要做这一步,此处的性能是很重要的:对于静态 SQL,这一步的性能实际上关系不大,因为语句的准备是事先完成的. 在客户机,将要插入的行的各个 列值组装起来,发送到 DB2 服务器. DB2 服务器确定将这一行插入到哪一页中. DB2 在 用于该页的缓冲

DB2中两种语言:SQL/XML和XQuery的使用

您可以单独使用 XQuery 和 SQL,但也可将 XQuery 嵌入 SQL 中使用(反之亦可).每一种可选方案在特定环境下都非常有用.本文将讨论这些可选方案,介绍其各自的优缺点,并给出根据您的需求选择恰当方案的指导原则. DB2 中的 pureXML 支持为管理 XML 数据提供了高效且通用的功能.DB2 以 XML 数据自身固有的分层格式存储和处理这些数据,避免因为将 XML 存储为 CLOB 中的文本或将它映射为关系表而导致的性能和灵活性限制.与仅使用 XML 的数据库不同,DB2 V9

DB2中理解系统时间和业务时间

DB2 不再仅仅面向 DBA.长久以来,DB2 因杰出的核心 DBMS 功能而闻名于世,而如今,DB2 使http://www.aliyun.com/zixun/aggregation/7155.html">开发人员也能够利用它的强大特性.这方面的一个示例就是直接在模式内实现基于时间的信息.这是通过 DB2 10 for Linux, UNIX, and Windows 中新增的时态表来实现的. 利用时态表,您能够轻松地跟踪和分析业务中的变化,准确对比两个时间点的数据.该功能允许您有效执行

在DB2中如何實現Oracle的相關功能(三)

oracle 在DB2中如何實現Oracle的相關功能(三)作者﹕CCBZZP    在現實的應用中大家可能經常會遇到在DB2中如何實現Oracle的某些功能﹐在此我簡單地總結一下﹐實現某一功能可能會有很多種方法﹐在此就沒有全部列出﹐歡迎大家繼續﹐以便和大家共享﹐共同探討﹐共同近步﹗(以下主要以Oracle8I,9I和DB2 7.X為例).1.如何查有多少個數据庫實例的Oracle和DB2的寫法  Oracle 可以這樣實現﹕  SQL>SELECT * FROM V$INSTANCE;  DB

在DB2中如何實現Oracle的相關功能(一)

oracle 在DB2中如何實現Oracle的相關功能(一)作者﹕CCBZZP    在現實的應用中大家可能經常會遇到在DB2中如何實現Oracle的某些功能﹐在此我簡單地總結一下﹐實現某一功能可能會有很多種方法﹐在此就沒有全部列出﹐歡迎大家繼續﹐以便和大家共享﹐共同探討﹐共同近步﹗(以下主要以Oracle8I和DB2 7.X為例). 1.如何取一表前n筆記錄的Oracle和DB2的寫法  Oracle 可以這樣實現﹕   Select * from user.bsempms where row

在DB2中如何實現Oracle的相關功能(二)

oracle 在DB2中如何實現Oracle的相關功能(二)作者﹕CCBZZP    在現實的應用中大家可能經常會遇到在DB2中如何實現Oracle的某些功能﹐在此我簡單地總結一下﹐實現某一功能可能會有很多種方法﹐在此就沒有全部列出﹐歡迎大家繼續﹐以便和大家共享﹐共同探討﹐共同近步﹗(以下主要以Oracle8I,9I和DB2 7.X為例).1.如何查看數据庫的版本的Oracle和DB2的寫法  Oracle 可以這樣實現﹕  SQL> connect system/manager124@test

在DB2中如何實現Oracle的相關功能(四)

oracle  在DB2中如何實現Oracle的相關功能(四)作者﹕CCBZZP        在現實的應用中大家可能經常會遇到在DB2中如何實現Oracle的某些功能﹐在此我簡單地總結一下﹐實現某一功能可能會有很多種方法﹐在此就沒有全部列出﹐歡迎大家繼續﹐以便和大家共享﹐共同探討﹐共同近步﹗(以下主要以Oracle8I,9I和DB2 7.X為例).1.如何實現分頁顯示的Oracle和DB2的寫法  Oracle 可以這樣實現﹕  SQL>select rownum,* from BSEMPMS

简单理解DB2中编目的概念

在DB2数据库中,编目(catalog)这个单词很难理解,我自己当初在学习DB2的时候也常常被这个编目搞 的很不明白,直到现在我个人也感觉到DB2中编目(catalog)这个术语用的不是很好,具体来说编目有编 目节点,编目数据库等. 如果要理解编目,我先简单讲一下DB2数据库的体系结构,在DB2数据库中最大的概念是系统(节点) 也就是主机,下面是实例,实例下面是数据库,然后是表空间,然后是数据库对象.现在假设你有一个数 据库服务器在p570的机器上,你有一个客户端在windows,linux或任

DB2中创建一个获取汉字拼音首字母的SQL函数

有些时候我们会有这样的需求,要求使用字母从a至z对一组数据进行索引,如果数据的格式全部是半角的英文则很容易实现,但若是对一组中文数据进行索引则会引起一点小的麻烦,数据在录入数据库的时候可能并没有指定一个索引字母,这就要求应用程序可以自动生成用于索引的信息. 一般对于中文数据的索引,采用词组的首汉字拼音的首字母,例如: 词组 索引字母 --- ----- 熊猫 x 白暨豚 b 藏野驴 z 在DB2中并没有提供相应的函数可以取得汉字拼音的首字母,我们可以利用数据库针对中文字符集的排序功能创建一个这样