2006年07月
要使你的连结支持分布式事务,你要在DataSource的配置中指明type是XADataSource就行了.然后申请一个一务阅读全文>
发表于 @ 2006年07月07日 08:57:00|评论(loading...)|编辑
mysql,sqlserver,oracle三种数据库的大对象存取阅读全文>
发表于 @ 2006年07月07日 08:41:00|评论(loading...)|编辑
在JDBC应用中,如果你已经是稍有水平开发者,你就应该始终以PreparedStatement代替Statement.也就是说,在任何时候都不要使用Statement.阅读全文>
发表于 @ 2006年07月07日 08:39:00|评论(loading...)|编辑
为什么要反复谈JDBC连结,因为所以JDBC的性能,最主要的就是JDBC连结,而SQL语句的
优化,和JAVA编程无关,你的一个查询语句的效率,是你对于SQL语法的使用技巧,这一方
面你就可请教DBA,而不是来看我这种程序设计者的文章.
阅读全文>
发表于 @ 2006年07月07日 08:34:00|评论(loading...)|编辑
在JDBC3.0中,已经可以直接返回insert 语句的主KEY和其它值,但目前只有mysql支持.oracl和sqlserver
的JDBC都不支持这个特性.而且如果离开JAVA平台就没有这个特性了.阅读全文>
发表于 @ 2006年07月07日 08:27:00|评论(loading...)|编辑
oracle 对于高级特性总是与众不同(我极度力讨厌这一点,如果使用它的产品就要对这种产品
进行特定的编程,这也是我从不看好weblogic之类的平台的原因),大对象存取一点要用它自己
的LOB对象,所幸我还能通过LONG RAW来代替.以便能使程序不需要特定的编码.但对于存储过程
(我是说返回结果集的存储过程),我还没有什么方法能用一个通用的程序来处理ORACLE.太多的
教材或文章在讲存储过程的调用只是不负责任地简单执行一些涵数或无结果返回的存储过程,
使大多数读者根本不知道到底如何调用存储过程的结果集.而在Spring中,根本就没有真正完全
地介绍对存储过程的结果集的处理,更别说象oracle这种"特别"的存储过程的结果集处理.
阅读全文>
发表于 @ 2006年07月07日 08:26:00|评论(loading...)|编辑
在前面的介绍中,我们可以看出, DataSource才能提供最高性能的对数据库的并发访问,
但是,对DataSource的引用,也还有很多知识要弄清楚,获取Connection的方式是数据库性能最相
关的技术,而对DataSource的调用对数据库性能起着很大的决定作用。阅读全文>
发表于 @ 2006年07月07日 08:23:00|评论(loading...)|编辑
对于一个存诸过程,如果返回的结果是我们预先知道的,那么可以根据存储过程定义的顺序来进行
处理(事实上一般不会这样),但对于复杂的多结果集的处理,如何定义一个通用的流程?
阅读全文>
发表于 @ 2006年07月07日 08:22:00|评论(loading...)|编辑
JDBC的大对象存储听起来复杂,其实如果你明白了原理以后,就非常简单,网上有关这方面的
教材很少,而SUN的文档中,我从1.2开始看到一在仍然是错误的,不知道写文档的人长脑子没
有,就那几行代码你试试不就知道了,这么多次重抄下来还是错误的阅读全文>
发表于 @ 2006年07月07日 08:18:00|评论(loading...)|编辑
我们所说有JDBC高级应用,并不是说它的技术含量很高(也许JAVA平台上不存在什么"技术含量"的说
法,因为JAVA是给大家用的而不是给某些人用的).说它是高级应用,是因为它是对于JDBC基础应用来
说的扩展,也就是可以优化你的应用性能,或方便于应用的实现.所以说它是一种高级应用而不叫高级
技术.
JDBC中,java.sql包是基础的,也是核心的功能,javax.sql包则是高级的,扩展的功能.所以
为了交流的方便,我们把它们区分为core API和optional API.
阅读全文>
发表于 @ 2006年07月07日 08:16:00|评论(loading...)|编辑
到目前为止,JDBC其实都实现了 SQL-2 ENTRY Level,而SQL-2 Transitional Level
也基本实现(我没有用过没有实现的).只有实现上面的规范,JDBC就实现以下"通用"功能.它
会把这些通用的语义,标题,存储过程,涵数转化为数据库对应的功能,所以你只要掌握这些通
用语法在JDBC中应用,就不要再为特定数据库编写特定代码:
阅读全文>
发表于 @ 2006年07月07日 08:14:00|评论(loading...)|编辑
有时(我到目前只见到过一次),我们对一种新的数据库根本不知道它的结构或者是
其中的内容,那么我们如何来获取数据库的情况呢?阅读全文>
发表于 @ 2006年07月07日 08:11:00|评论(loading...)|编辑
要把一个数据库操作独立到一个类(Bean)中,至少要考虑以下几个方面:
1.对于不同层次的应用,应该有不同的得到连结的方法,如果得到连结的方法要随
着应用层次的不同而改变,我们就应该把他独立成一个专门的类中,而把在任何应用层次
中都通用的处理方法封装到一个(类)Bean中.
2.既然考虑到既作为javaBean使用又可以用为一个普通类调用,要考虑到javaBean
的规范和普通类的灵活性.
3.对于特定的数据库操作不应封装到共性的(类)Bean中,而应该成为它的扩展类.阅读全文>
发表于 @ 2006年07月07日 08:09:00|评论(loading...)|编辑
如果Connection已经关闭,那是不可能再从ResultSet中取到数据的.
有很多人问我,我可不可以取到一个ResultSet把它写到Session中然后关闭Connection,这样就
不要每次都连结了.我只能告诉你,你的想法非常好,但,是错误的!当然在javax.sql包中JDBC高
级应用中有CacheRow和WebCacheRow可以把结果集缓存下来,但那和我们自己开一个数据结构把
ResultSet的行集中所有值一次取出来保存起来没有什么两样.
阅读全文>
发表于 @ 2006年07月07日 08:05:00|评论(loading...)|编辑
一个Statement对象默认同时只能有一个结果集在活动.这是宽容性的,就是说即使没有
调用ResultSet的close()方法,只要打开第二个结果集就隐含着对上一个结果集的关闭.所以
如果你想同时对多个结果集操作,就要创建多个Statement对象,如果不需要同时操作,那么可
以在一个Statement对象上顺序操作多个结果集.(不过当我修改这篇文章的时候已经可以同时
保持多个结果集了)
阅读全文>
发表于 @ 2006年07月07日 08:03:00|评论(loading...)|编辑
为了通用,JAVA中要求有一种机制,在操作不同厂商数据库时有相同的方法去操作,而不是每接
触一种数据库就要学习新的方法.完成这种机制的"东西"就叫"JDBC"了.阅读全文>
发表于 @ 2006年07月07日 07:56:00|评论(loading...)|编辑