当前位置: 首页 > web开发 > JSP > 正文

JSP中使用Java的JDBC技术实现对数据库的各种操作

时间:2014-10-27

在JSP 中可以使用Java 的JDBC 技术,实现对数据库中表记录的查询、修改和删除等操作。JDBC 技术在JSP 开发中占有很重要的地位。

JDBC(Java DataBase Connectivity)是Java 数据库连接API。简单地说,

JDBC 能完成三件事:

(1) 与一个数据库建立连接,

(2) 向数据库发送SQL 语句,

(3) 处理数据库返回的结果。

JDBC 和数据库建立连接的一种常见方式是建立起一个JDBC─ODBC 桥接器。由于ODBC 驱动程序被广泛的使用,建立这种桥接器后,使得JDBC 有能力访问几乎所

有类型的数据库。JDBC 也可以直接加载数据库驱动程序访问数据库,

如果使用 JDBC─ODBC 桥接器访问数据库,事先必须设置数据源。

1 数据源

利用系统建立一个ODBC数据源。

2.JDBC-ODBC 桥接器

建立一个JDBC─ODBC 桥接器,即加载桥接器驱动程序。

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

Class 是包java.lang 中的一个类,该类通过调用它的静态方法forName 就可以建立JDBC-ODBC 桥接器。

3 查询记录

(1)连接到数据库

首先使用包 java.sql 中的Connection 类声明一个对象,然后再使用类DriverManager 调用它的静态方法getConnection 创建这个连接对象:

本栏目更多精彩内容:http://www.bianceng.cn/webkf/JSP/

Connection con = DriverManager.getConnection("jdbc:odbc:数据源名字","login name", "password ");

(2)向数据库发送SQL 语句。

首先使用 Statement 声明一个SQL 语句对象,然后通过刚才创建的连接数据库的对象con 调用方法createStatment()创建这个SQL 语句对象。

Statement sql=con.createStatement();

(3)处理查询结果

有了 SQL 语句对象后,这个对象就可以调用相应的方法实现对数据库中表的查询和修改。并将查询结果存放在一个ResultSet 类声明的对象中,

也就是说SQL 语句对数据库的查询操作将返回一个ResultSet 对象:

ResultSet rs=sql.executeQuery("SELECT * FROM 成绩表");

ResultSet 对象是以统一形式的列组织的数据行组成。ResultSet 对象一次只能看到一个数据行,使用next()方法走到下一数据行,获得一行数据后,

ResultSet 对象可以使用getxxxx 方法获得字段值,将位置索引(第一列使用1,第二列使用2 等等)或字段名传递给getxxxx方法的参数即可

使用结果集Result 的next()方法,可以顺序的查询。一个结果集将游标最初定位在第一行的前面,第一次调用next()方法使游标移动到第一行。

next()方法返回一个boolean 型数据,当游标移动到最后一行之后返回false。

可滚动的结果集:

Statement stmt=con.createStatement(int type ,int concurrency);

根据参数的 type、concurrency 的取值情况,stmt 返回相应类型的结果集:

type 的取值决定滚动方式,取值可以是:

ResultSet.TYPE_FORWORD_ONLY :结果集的游标只能向下滚动。

ResultSet.TYPE_SCROLL_INSENSITIVE :结果集的游标可以上下移动,当数据库变化时,当前结果集不变。

ResultSet.TYPE_SCROLL_SENSITIVE :返回可滚动的结果集,当数据库变化时,当前结果集同步改变。

Concurrency 取值决定是否可以用结果集更新数据库,Concurrency 取值:

ResultSet.CONCUR_READ_ONLY:不能用结果集更新数据库中的表。

ResultSet.CONCUR_UPDATETABLE:能用结果集更新数据库中的表。

滚动查询经常用到 ResultSet 的下述方法:

public boolean previous():将游标向上移动,该方法返回boolean 型数据,当移到结果集第一行之前时返回false.

public void beforeFirst():将游标移动到结果集的初始位置,即在第一行之前。

public void afterLast():将游标移到结果集最后一行之后。

public void first():将游标移到结果集的第一行。

public void last():将游标移到结果集的最后一行。

public boolean isAfterLast():判断游标是否在最后一行之后。

public boolean isBeforeFirst():判断游标是否在第一行之前

public boolean ifFirst():判断游标是否指向结果集的第一行。

public boolean isLast():判断游标是否指向结果集的最后一行。

public int getRow():得到当前游标所指行的行号,行号从1 开始,如果结果集没有行,返回0

public boolean absolute(int row):将游标移到参数row 指定的行号。

注意:如果row 取负值,就是倒数的行数,absolute(-1)表示移到最后一行,absolute(-2)表示移到倒数第2 行。当移动到第一行前面或

最后一行的后面时,该方法返回false。