介绍JSP数据库高级操作

开发 后端
本文简单介绍JSP数据库高级操作,包括三个小技巧数据排序,主/从表处理和事务处理。

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

1.数据排序

在JSP数据库技术中,可以使用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( ); 
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.

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" 
)  

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.

3.事务处理

事务是JSP数据库理论中的核心概念之一。如果一组处理步骤或者全部发生或者一步也不执行,我们称该组处理步骤为一个事务。当所有的步骤像一个操作一样被完整地执行,我们称该事务被提交。由于其中的一部分或多步执行失败,导致没有步骤被提交,则事务必须回滚(回到最初的系统状态)。事务必须服从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;  
 }查看本文来源   
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.

 

【编辑推荐】

  1. JSP连接ORACLE数据库时注意的一些问题
  2. JSP中tomcat的SQL Server2000数据库连接池的配置
  3. 简单介绍Servlets和JSP的区别
  4. JSP include指令和include行为的区别
  5. JSP输出excel文档和中文乱码问题的解决
责任编辑:佚名 来源: builder
相关推荐

2009-07-01 11:08:14

JSP DestoryJSP Init数据库链接

2011-05-17 13:43:23

Oracle数据库

2009-07-03 14:10:59

2009-06-30 15:54:00

数据库访问JSP

2023-06-06 08:25:31

SQLAlchemy数据库

2009-07-02 08:50:01

JSP标签库

2009-12-17 13:30:49

Ruby操作Acces

2011-03-11 17:16:02

JSP操作数据库访问效率

2024-03-25 07:22:50

GolangMySQL数据库

2011-04-14 09:27:37

内存数据库

2011-03-17 14:51:33

数据库自我调整

2009-07-03 13:56:21

JSP编程技巧

2010-01-07 17:24:12

VB.NET连接数据库

2009-07-06 15:57:56

获取数据库连接JSP

2015-10-28 14:45:35

ORACLE AIO异步IO

2011-04-13 15:07:30

数据库系统设计

2009-07-07 17:37:32

JSP标签库

2011-07-04 15:14:49

C#

2010-03-26 09:06:06

Python连接数据库

2010-09-27 14:54:38

SQL数据库
点赞
收藏

51CTO技术栈公众号