Applet是用Java语言编写的小应用程序,它能够嵌入在HTML中,并由WWW浏览器来解释执行。但是,如何在Applet中处理Internet世界中大量的数据和分布在网络各个角落的各种各样的数据库资源呢?这就要使用JDBC。
一、JDBC的工作原理
JDBC(Java DataBase Connectivity)是用于执行SQL语句的Java应用程序接口,由一组用Java语言编写的类与接口组成。JDBC是一种规范,它让各数据库厂商为Java程序员提供标准的数据库访问类和接口,这样就使得独立于DBMS的Java应用程序的开发工具和产品成为可能。JDBC是利用JDBC-ODBC桥通过ODBC来访问数据库的,如下图所示:
二、JDBC编写数据库程序的方法
1.建立数据源
建立数据源是指建立ODBC数据源。
2.建立连接
与数据库建立连接的标准方法是调用方法Drivermanger.getConnection(String url,String user,String password)。Drivermanger类用于处理驱动程序的调入并且对新的数据库连接提供支持。
3.执行SQL语句
JDBC提供了Statement类来发送SQL语句,Statement类的对象由createStatement方法创建;SQL语句发送后,返回的结果通常存放在一个ResultSet类的对象中,ResultSet可以看作是一个表,这个表包含由SQL返回的列名和相应的值,ResultSet对象中维持了一个指向当前行的指针,通过一系列的getXXX方法,可以检索当前行的各个列,从而显示出来。
三、JDBC编写数据库程序的实现
为了便于问题的说明,作如下假设。运行环境:Windows 98 (附加Personal Web Server(PWS))、IE4.0或以上浏览器、Access97;程序编辑、编译环境:VJ++6.0。
1.建立数据源interweb,其连接的数据库是使用Access 97建立的interweb,其中的表为t_interdata,结构如下:
字段名 | 类型 | 长度 |
bh | 文本 | 10 //编号 |
mc | 文本 | 20 //名称 |
dj | 货币 | 自动 //单价 |
2.实现程序
package test;
import java.awt.*;
import java.applet.*;
import java.sql.*;
public class Applet1 extends Applet {
public void init() {
resize(400, 300);
}
//此方法用于显示输出
public void paint(Graphics g)
{
//定义背景颜色
this.setBackground(Color.lightGray);
//定义前景颜色
this.setForeground(Color.red);
String url = "jdbc:odbc:interweb";
String ls_1 = "select * from t_interdata";
try {
Class.forName("sun.jdbc.odbc.JdbcOdbc");
Connection con = DriverManager.getConnection(url, "sa", "sky");
Statement stmt = con.createStatement();
ResultSet result = stmt.executeQuery(ls_1);
// 返回结果
g.drawString("编号", 40, 40);
g.drawString("名称", 80, 40);
g.drawString("价值", 160, 40);
int i = 10;
while (result.next()) {
// 取各个字段的值
g.drawString(result.getString(1), 40, 60 + i);
g.drawString(result.getString(2), 80, 60 + i);
g.drawString(result.getString(3), 160, 60 + i);
i += 20;
}
// 关闭连接
result.close();
stmt.close();
con.close();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
3. 编译后产生Applet1.class文件,嵌入到下面的page1.html中。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>page1.html</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
</head>
<body>
<!-- Insert HTML here -->
<APPLET
code=Applet1.class
codebase="http://yang/youngnewweb/interweb/web2/"
height=200
name=Applet1
width=320 >
</APPLET>
</body>
</html>