· [Java论坛][安全论坛][数据库论坛][操作系统论坛]
· [专题] IBM Rational高峰论坛 Windows 7十大功能
· [专题] 史上就危险7月 微软 BizSpark 计划介绍
· [IT技术周刊][IT资源下载专区][病毒求助专区]
· [热点] 我也能做CTO_赛迪连载 赛迪七夕特别行动
· [热点] Chrome 4.0采用V8引擎 Java开发编程规范

使用技巧:简单介绍JSP数据库高级操作

发布时间:2007.06.05 05:33     来源:赛迪网    作者:龚勋

简单介绍JSP数据库操作的3个小技巧:数据排序,主/从表处理,事务处理。

1 数据排序

在数据库技术中,可以使用ORDER子句对查询结果进行排序

[ ORDER BY { order_by_exdivssion[ ASC | DESC]} [ ¸…n ] ]

其中,order_by_exdivssion用来指定要排序的列;ASC指定按递增顺序排列;DESC指定按递减顺序排序。

Class.forName( "com.microsoft.jdbc.sqlserver.SQLServerDriver" ).new Instance( );
String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=pubs";
String user="dxaw";
String password="123";
Connection conn=DriverManager.getConnection( url, user, password );
Statement st=conn.createStatement( ResultSet.TYPE_SCROLL_SENSITIVE,
 ResultSet.CONCUR_UPDATABLE );
String sql="select * from tbl order by id desc";
ResultSet rs=st.executeQuery( sql );
while( rs.next )...{
    out.println( rs.getString( "..." ) );
}
rs.close( );
st.close( );
conn.close( );

2 主/从表处理

实现主从表查询主要通过IN子句和EXISTS子句为实现。

IN子句是通过IN(或NOT IN)连接起来的一种检索数据的方法,其返回的结果集中可以包含零个或者多个值。

EXISTS子句是通过EXISTS(或NOT EXISTS)连接起来的一种检索数据的方法,它的功能是判断子查询的结果集中是否有数据行返回,返回TRUE或FALSE,而不返回其他的实际数据。由于不需要在这种子查询中返回具体值,这种子查询的选择列表经常使用“SELECT *”格式,其外层的WHERE子句也不需要指定列名。

select au_id, au_name form authors where au_id IN ( 
select au_id form titleauthor where title_id IN ( 
select title_id form titles where type="business"
)
)

3 事务处理

事务是现代数据库理论中的核心概念之一。如果一组处理步骤或者全部发生或者一步也不执行,我们称该组处理步骤为一个事务。当所有的步骤像一个操作一样被完整地执行,我们称该事务被提交。由于其中的一部分或多步执行失败,导致没有步骤被提交,则事务必须回滚(回到最初的系统状态)。事务必须服从ISO/IEC所制定的ACID原则。ACID是原子性(atomicity)、一致性(consistency)、隔离性(isolation)和持久性(durability)的缩写。事务的原子性表示事务执行过程中的任何失败都将导致事务所做的任何修改失效。一致性表示当事务执行失败时,所有被该事务影响的数据都应该恢复到事务执行前的状态。隔离性表示在事务执行过程中对数据的修改,在事务提交之前对其他事务不可见。持久性表示已提交的数据在事务执行失败时,数据的状态都应该正确。

在JDBC中怎样将多个SQL语句组合成一个事务呢?在JDBC中,打开一个连接对象Connection时,缺省是auto-commit模式,每个SQL语句都被当作一个事务,即每次执行一个语句,都会自动的得到事务确认。为了能将多个SQL语句组合成一个事务,要将auto-commit模式屏蔽掉。在auto-commit模式屏蔽掉之后,如果不调用commit()方法,SQL语句不会得到事务确认。在最近一次commit()方法调用之后的所有SQL会在方法commit()调用时得到确认。

public int delete(int sID) {
 dbc = new DataBaseConnection();
 Connection con = dbc.getConnection();
 try {
  con.setAutoCommit(false);// 更改JDBC事务的默认提交方式
  dbc.executeUpdate("delete from tab1 where ID=" + sID);
  dbc.executeUpdate("delete from tab2 where ID=" + sID);
  dbc.executeUpdate("delete from tab3 where bylawid=" + sID);
  con.commit();//提交JDBC事务
  con.setAutoCommit(true);// 恢复JDBC事务的默认提交方式
  dbc.close();
  return 1;
 }
 catch (Exception exc) {
  con.rollBack();//回滚JDBC事务
  exc.printStackTrace();
  dbc.close();
  return -1;
 }
}

(责任编辑:龚勋)


[ 发表评论 ] 字体[  ] [ 打印 ] [ 进入博客 ] [ 进入论坛 ]  [ 推荐给朋友 ]
  相关文章
· 数据库名词解释之空地数据链系统ACARS (06-04) · 数据库名词解释之数据库连接及无缝连接 (06-04)
· 数据库基本知识小结:模糊、统计、网状 (06-04) · 帮你精细分析各种类型数据库的死锁问题 (06-04)
· Jsp Servlet基础入门学习篇处理Cookie (06-01) · 通过用JAVAP反汇编来帮你理解Java特性 (06-01)
· Java极限考验 ClassLoader类的装载策略 (06-01) · Java技巧:用匿名类来实现简化程序调试 (06-01)
· 手机延长寿命有技巧 七条妙招帮你省银子 (06-01) · 如何实现数据库的集成是向厂商提出的挑战 (06-01)
  客户需求反馈表
* 姓  名:
更多资料  了解方案  认识厂商
* 单位名称:
* 联系电话:
* 电子邮件:
资讯 通信 IT产品 IT技术 信息化
专题:扭亏为盈 联想09年Q2翻番
·专题:Tech·Ed 2009微..
·直播:2009互联网大会..
·迅雷搜狐"互搏" 谁动了..
专题:诺基亚危局已现 或重蹈摩托覆辙
·六股势力角逐4G标准 中..
·专题:联通iPhone并不贵..
·专题:排排坐开商店 三..
商务演示需求分析 多媒体会议室必备投影
·VMware在京隆重举行2009..
·专题:笔记本频道10月热..
·专题:学生机市场 惠普 ..
专题:Tech.Ed 2009微软技术大会
·专题:2009 SYBASE 亚太..
·专题:微软新一代桌面操..
·专题:2009年第3届CSDN..