第 14章 数据变动功能网页
JSP 动态网页新技术 1
Statement & ResultSet
Statement定义运行 SQL指令所需的方法成员,如果运行的 SQL是一种 SELECT类型的指令 。
ResultSet则封装 Statement运行 SQL指令之后所返回的数据内容,
用户通过 ResultSet取得 SQL语句返回的数据内容 。
第 14章 数据变动功能网页
JSP 动态网页新技术 2
Statement & ResultSet
数 据 库
S t a t e m e n t 对 象传 送 S Q L 指 令数 据 库 引 擎处 理 S Q L 语 句返 回 封 裝 的 S E L E C T 指 令处 理 结 果 的 R e s u l t S e t 对 象
C o n n e c t i o n
对 象
J S P 网 页
R e s u l t S e t
对 象
R e s u l t S e t
对 象数 据 库 连 接第 14章 数据变动功能网页
JSP 动态网页新技术 3
Statement 成员方 法 说 明
close() 结束对象,释放占用资源
addBatch(String sql) 将要运行的 SQL指令加到批次指令中
clearBatch() 清除所有的 SQL批次运行指令
executeBatch() 运行 SQL批次指令
execute(String sql) 运行 SQL一般指令
executeQuery(String sql) 运行 SQL查询指令,如 select指令
executeUpdate(String sql) 运行 SQL更改指令,如 insert,delete,update
getConnection() 返回产生这个 Statement对象的 Connection对象
setMaxRows(int max) 设定 ResultSet对象中可包含的最多数据数目为 max
getMaxRows() 返回 ResultSet对象中可包含的最多数据数目第 14章 数据变动功能网页
JSP 动态网页新技术 4
ResultSet 成员方 法 说 明
absolute(int index) 移动指针到第 index笔数据
first() 移动指针到第一笔数据
last() 移动指针到最后一笔数据
afterLast() 移动指针到最后一笔数据之后
beforeFirst() 移动指针到第一笔数据之前
next() 移动指针到下一笔数据
previous() 移动指针到上一笔数据
relative(int rows) 将指针往上或往下移动 rows个位置,往上移则 rows为负数,
往下移则 rows为正数第 14章 数据变动功能网页
JSP 动态网页新技术 5
ResultSet 成员方 法 说 明
isAfterLast() 返回布尔值表示指针是否位于最后一笔数据之后
isBeforeFirst() 返回布尔值表示指针是否位于第一笔数据之前
isFirst() 返回布尔值表示指针是否位于第一笔数据的位置
isLast() 返回布尔值表示指针是否位于第一笔数据的位置
getRow() 返回目前指针所指数据的位置第 14章 数据变动功能网页
JSP 动态网页新技术 6
ResultSet 成员方 法 说 明
getString(int index) 返回目前指针所指的数据,第 index字段中的字符串
getString(String name) 返回目前指针所指的数据,字段名称为 name中的字符串
getInt(int index) 返回目前指针所指的数据,第 index字段中的数值
getInt(int index) 返回目前指针所指的数据,第 index字段中的数值
getInt(String name) 返回目前指针所指的数据,第 index字段中的数值
deleteRow() 删除指针所在的该笔数据
refreshRow() 重设数据中的值为上一次更新前的值
getFetchSize() 返回 ResultSet对象中可包含最多的数据笔数
close() 结束对象,释放占用资源第 14章 数据变动功能网页
JSP 动态网页新技术 7
运行 SQL一般指令
Connection con = DriverManager.getConnection("jdbc:odbc:webData");
Statement smt = con.createStatement();
String sql = "create table people";
smt.execute(sql);
– Statement对象 smt是由 Connection类型的对象 con调用 createStatement()
所产生的,而在定义了一个建立数据表的 SQL指令字符串 sql后,运行 smt.execute(sql)来运行 SQL指令 。
第 14章 数据变动功能网页
JSP 动态网页新技术 8
变动数据表
变动数据表结构的方式,只需将相关的 SQL指令传入 execute(sql)
方法即可 。
SQL变动指令是指对数据库进行新增 (insert)、删除 (delete)或更新
(update)等操作 。
第 14章 数据变动功能网页
JSP 动态网页新技术 9
运行 SQL查询 指令
executeQuery()方法 方法在运行完成之后,会返回一个 ResultSet
类型的对象,其中封装了代表查询结果的数据内容,
Connection con =
DriverManager.getConnection("jdbc:odbc:webData");
Statement smt = con.createStatement();
String sql = "SELECT * FROM Author";
ResultSet rs = smt.executeQuery(sql);
第 14章 数据变动功能网页
JSP 动态网页新技术 10
ResultSet对象
ResultSet对象是运行 SQL查询后,所产生的数据集合对象,代表一种表格状的数据集合对象,包含 SQL语句所产生的数据内容 。
第 14章 数据变动功能网页
JSP 动态网页新技术 11
指针位置
ResultSet对象返回的时候,指针在第一条数据之前的开头位置 。
利用方法 next()将指针往下移动 。
第 14章 数据变动功能网页
JSP 动态网页新技术 12
获取字段内容
getString()方法取得其中的字段值 。
strID=rs.GetString(0) ;
strName=rs.GetString(1) ;
– 根据字段的索引顺序,将索引值当作参数传入 getString()方法,
便可以取得字段的内容 。
第 14章 数据变动功能网页
JSP 动态网页新技术 13
SQL批处理 指令
SQL批处理 指令可一次 运行 多段 SQL指令 。
用户可以设定多个要运行的 SQL指令,将这些 SQL指令以
addBatch()方法加到批处理文件中,而后引用 executeBacth()方法运行 。
第 14章 数据变动功能网页
JSP 动态网页新技术 14
交易
交易 是以一个批次为单位运行数个独立的 SQL指令 。
交易将操作数据库的操作视为不可分割的过程 。
一旦过程中某段 SQL运行发生错误,则先前所有运行完毕的步骤都将失效,只有整个交易过程成功运行完成之后,所有 SQL指令的变动内容才会整个生效 。
第 14章 数据变动功能网页
JSP 动态网页新技术 15
交易方法
交易的状态必须由 Connection作设定 。
setAutoCommit ()用来设定是否目前的联机处于交易状态 。
rollback()为取消交易的任何操作,将所有状态回复到未运行任何操作的初始状态。
commit()则是确认所有交易的操作。
第 14章 数据变动功能网页
JSP 动态网页新技术 16
交易 过程交 易初 始 状 态完 成 状 态
SQL指 令 1
SQL指 令 2
SQL指 令 n
SQL运 行 异 常

发 生 异 常,
所 有 操 作返 回 至原 始 状 态第 14章 数据变动功能网页
JSP 动态网页新技术 17
设定交易
Connection默认会自动确认每一次数据库的操作行为,要改变这种行为,只需取消自动确认的行为即可 。
conn.setAutoCommit(false);
– setAutoCommit()接受一个 boolean参数,当这个值为 false的时候,联机的自动确认的预设行为会被取消 。
第 14章 数据变动功能网页
JSP 动态网页新技术 18
取消 与确认
一旦这一段程序代码被运行,所有交易开始运行的操作都将失效,
conn.rollback();
当所有的操作都已经正确无误的被完成之后,呼叫 commit()可以确认整个交易被完成 。
conn.commit();
第 14章 数据变动功能网页
JSP 动态网页新技术 19
控制指针
默认情况下,ResultSet对象只能引用 next()方法控制指针一次往前移动一格 。
Statement smt = con.createStatement
(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_R
EAD_ONLY);
– 这行程序代码所生成的 Statement对象 smt来运行数据查询的
SQL指令,产生的 ResultSet对象其指针就不会被限定只能往下依序逐行移动了 。
第 14章 数据变动功能网页
JSP 动态网页新技术 20
JSTL SQL标签分 类 标 签 说 明联机 setDataSource 设定数据来源
SQL操作指令 query 设定 SQL查询
param 设定 SQL参数
update 设定 SQL变动
dateParam 日期参数解析
transaction 批量交易第 14章 数据变动功能网页
JSP 动态网页新技术 21
<sql:setDataSource>
语法
<sql:setDataSource
{dataSource="dataSource" |
url="jdbcUrl"
[driver="driverClassName"]
[user="userName"]
[password="password"]}
[var="varName"]
[scope=”{page|request|session|application}”]/>
第 14章 数据变动功能网页
JSP 动态网页新技术 22
<sql:setDataSource>-属性属 性 动态 类 型 说 明
dataSource 是 String or
javax.sql.DataSource
数据源名称字符串,可指定为 JNDI
来源或是 JDBC联机字符串
driver 是 String JDBC参数字符串,驱动程序类名称
url 是 String JDBC参数字符串,数据来源名称
user 是 String 数据库用户账号
password 是 String 数据库用户密码
var 否 String 储存联机设定的变量名称
scope 否 String 变量范围第 14章 数据变动功能网页
JSP 动态网页新技术 23
dataSource
dataSource代表一个联机字符串,所有的联机信息可以被直接设定在这个属性当中 。
url[,[driver][,[user][,password]]]
– url为联机数据库的来源位置,即 ODBC数据源 。
– driver为所需的驱动程序类名称 。
– user与 password则分别是数据库的联机账号与密码,如果数据库没有设定,则这两个值可以被省略 。
第 14章 数据变动功能网页
JSP 动态网页新技术 24
属性设定属 性 属 性 值
url jdbc:odbc:webData
driver sun.jdbc.odbc.JdbcOdbcDriver
第 14章 数据变动功能网页
JSP 动态网页新技术 25
<sql:setDataSource>标签设定数据源
通过 <sql:setDataSource>标签设定数据来源,
<sql:setDataSource
dataSource="jdbc:odbc:WData,sun.jdbc.odbc.JdbcOdbcDriver" />
不使用数据源的设定方式如下,
<sql:setDataSource driver="sun.jdbc.odbc.JdbcOdbcDriver"
url="jdbc:odbc:WData" />
第 14章 数据变动功能网页
JSP 动态网页新技术 26
<sql:query>
语法 1,无本体内容
<sql:query sql="sqlQuery"
var="varName" [scope="{page|request|session|application}"]
[dataSource="dataSource"]
[maxRows="maxRows"]
[startRow="startRow"]/>
第 14章 数据变动功能网页
JSP 动态网页新技术 27
<sql:query>
语法 2,包含指定搜寻参数的本体内容
<sql:query sql="sqlQuery"
var="varName" [scope="{page|request|session|application}"]
[dataSource="dataSource"]
[maxRows="maxRows"]
[startRow="startRow"]>
<sql:param> actions
</sql:query>
第 14章 数据变动功能网页
JSP 动态网页新技术 28
<sql:query>
语法 3,包含指定搜寻参数与选择性参数的本体内容
<sql:query var="varName"
[scope=”{page|request|session|application}”]
[dataSource=”dataSource”]
[maxRows="maxRows"]
[startRow="startRow"]>
query
optional <sql:param> actions
第 14章 数据变动功能网页
JSP 动态网页新技术 29
<sql:query>-属性属 性 动 态 类 型 说 明
sql 是 包含 SELECT之 SQL字符串
SQL指令
dataSource 是 String or
javax.sql.DataSource
数据源名称字符串,可指定为 JNDI数据源或是 JDBC联机字符串
maxRows 是 String SQL指令返回结果当中所包含的最大数据笔数,设定值省略或是等于 -1时,返回结果将没有限制
startRow 是 String SQL指令开始返回的数据内容索引
var 否 String 储存输出结果
scope 否 String 变量范围第 14章 数据变动功能网页
JSP 动态网页新技术 30
<sql:param>
语法 1,将参数值指定给属性 value
<sql:param value="value"/>
语法 2,将参数值指定给本体内容 <sql:param>
parameter value
</sql:param>
第 14章 数据变动功能网页
JSP 动态网页新技术 31
<sql:update>
语法 1,无本体内容
<sql:update sql="sqlUpdate"
[dataSource=”dataSource”]
[var="varName"]
[scope=”{page|request|session|application}”]/>
第 14章 数据变动功能网页
JSP 动态网页新技术 32
<sql:update>
语法 2,包含指定搜寻参数的本体内容
<sql:update sql="sqlUpdate"
[dataSource=”dataSource”]
[var="varName"]
[scope=”{page|request|session|application}”]>
<sql:param> actions
</sql:update>
第 14章 数据变动功能网页
JSP 动态网页新技术 33
<sql:update>
语法 3,包含指定搜寻参数与选择性参数的本体内容
<sql:update [dataSource=”dataSource”]
[var="varName"]
[scope=”{page|request|session|application}”]>
update statement
optional <sql:param> actions
</sql:update>
第 14章 数据变动功能网页
JSP 动态网页新技术 34
<sql:dateParam>
JSTL另外提供一组标签 <sql:dateParam>专门用来处理这种类型的数据 。
语法
<sql:dateParam value="value" [type="{timestamp|time|date}"]/>
– 此标签的语法除了让网页设计人员指定所要使用的数据值,
同时可以用来设定此参数值为日期或是时间格式 。
第 14章 数据变动功能网页
JSP 动态网页新技术 35
<sql:dateParam>-属性属 性 动 态 类 型 说 明
value 是 java.util.Da
te
使用于字段为日期时间的参数值
type 是 String 日期时间类型,为以下 3个值其中一个,date,
time或是 timestamp