荔园在线
荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀
[回到开始]
[上一篇][下一篇]
发信人: Peter (小飞侠), 信区: Program
标 题: 编写基于DB2的Java Application和Java Applet
发信站: BBS 荔园晨风站 (Thu Jan 21 23:14:21 1999), 转信
Java与DB2数据库连接(中)
曙光信息产业有限公司应用软件部 阎小兵
如同上期所述,利用DB2的JDBC支持也可以建立两类应用:Java Ap
plication(应用程序和Java Applet(小应用程序)。前者通常位于客
户端,通过CAE(Client Application Enablr), 即客户应用使能器与D
B2建立联系,从而实现对数据库的访问。后者则不需要任何客户端DB2
部件,而只需要支持Java的浏览器在客户端解释执行,于是对数据库
的访问就可以在任何一种带有浏览器使能的平台上进行。
下面我们来具体说明Java Application和Java Applet的编程。
首先假设要访问的数据源名为mydb,JDBC Applet服务器运行于TCP/IP
端口号为2222的端口上,JDBC服务器所在的服务器为cherry.ncic.ac.
cn,操作系统为AIX 4.1。
1.引入适当的Java类
若是Java Application,需引入java.net.URL, jva.sql.*, ibm.
sql.*;
若是Java Applet,需引入tempjava.sql.*, ibm.netsql.*。
2.装载适当的JDBC驱动程序
若是Java Application,需装入ibm.sql.DB2Driver;相应的语句
为:
Class.forName("ibm.sql.DB2Driver");
若是Java Applet,需装入ibm.netsql.DB2Driver;相应的语句为:
Class.forName("ibm.netsql.DB2Driver");
3.与数据库建立连接
通过URL与数据库建立连接,在URL中需提供数据库位置、子协议
名(subprotocol)。对于DB2,子协议名为db2。
若是Application,其URL为:jdbc:db2:mydb。所建立的连接对象
格式如下:
Connection con = DriverManager.getConnection("jdbc:db2:m
ydb");
若是Applet,其URL为:jdbc:db2://cherry.ncic.ac.cn:2222/myd
b。所建立的连接对象格式如下:
Connection con=DriverManager.getConnection(jdbc:db2://ch
erry.ncic.ac.cn:222 /mydb,userid, password );
这里需特别指出的是,对于Applet,访问端口号必须大于1024。
4.向数据库传递SQL语言,执行查询,并返回结果
例如,可创建一SQL语句对象stmt:
Statement stmt = con.createStatement
执行查询,并返回结果:
ResultSet rs = stmt.executeQuery("SQL语句");
5.关闭连接
将所建立的连接对象关闭:
con.close();
从上述过程可以看出Java Applet与Java Application的编程基
本类似,主要不同点表现在JDBC URL上。由于Java Application与数
据库的通信是交由CAE来完成的,所以在其JDBCU RL中,不再包含主机
名和端口号这一部分,而这些信息对于Applet来说则是必须的。
当然,JDBC驱动程序的实现也不同,例如,对于Java Applet来说,J
DBC驱动程序为ibm.nt sql.DB2Driver,而对于Java Application,其J
DBC驱动程序为ibm.sql.DB2Driver。
下面给出一个完整的例子程序,说明在Java Applet中如何通过JD
BC访问DB2数据库。至于Java Application,通过上面的叙述相信读者
不难写出。
Java Applet例子程序源代码清单:
// 源文件名:MyDB2Applet.java
// 功能:该样例程序用于说明如何利用JDBC Applet驱动程序编
写访问
// DB2数据库的Java Applet
import java.net.URL;
import tempjava.sql.*;
import ibm.netsql.*;
import java.awt.Graphics;
public class DB2Applet extends java.Applet.Applet {
static {
try {
// 向DriverManager注册驱动程序
Class.forName("ibm.netsql.DB2Driver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
public void init() {
resize(200,100);
}
public void paint(Graphics g) {
try {
// JDBC服务器所在的机器的名字为//cherry.ncic.ac.cn
// JDBC服务器所监听的端口号为2222
// 数据源名为mydb
// 构造URL
String url = "jdbc:db2://cherry.ncic.ac.cn:2222/myd
b";
// 要访问的数据库的用户id为myid
String userid = "myid";
// 与上面的id相对应的口令为mypassword
String password = "mypassword";
Connection con = DriverManager.getConnection(url, u
serid, passwor );
// 从数据库中提取数据
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * from emp
loyee");
g.drawString("查询结果:", 10, 25);
// 显示结果集
// 当不再有记录行时,rs.next()返回false
int y = 50;
int i = 0;
while (rs.next() && (i<2)) {
i++;
String a= rs.getString(1);
String str = rs.getString(2);
String oneLine = "empno= " + a + "firstname= "
+ str;
g.drawString(oneLine, 20, y );
y = y + 15;
}
stmt.close();
// 更新数据库
g.drawString("开始更新数据...",10, 100);
stmt = con.createStatement();
int rowsUpdated = stmt.executeUpdate("UPDATE employ
ee set firstnme =SI LI‘where empno = 000010’");
// 显示被更新的记录行的行号
String msg = "更新的行 " + rowsUpdated;
if (1 == rowsUpdated) msg = msg +" 单行";
else msg = msg +"多行";
y = y + 40;
g.drawString(msg, 20, y);
stmt.close();
// 关闭连接
con.close();
}
catch( Exception e ) {
e.printStackTrace();
}
}
}
--
※ 来源:.BBS 荔园晨风站 bbs.szu.edu.cn.[FROM: 192.168.1.3]
[回到开始]
[上一篇][下一篇]
荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店