一聚教程网:一个值得你收藏的教程网站

热门教程

优化JDBC编程-多提提意见

时间:2022-07-02 18:21:20 编辑:袖梨 来源:一聚教程网

优化JDBC编程
这是我根据MS SQL SERVER 2000 JDBC DRIVER HELP,并参考其它资料整理而成。ms的这个帮助文件实在有失大家风范,示例代码很.....有兴趣者可以去下载http://download.microsoft.com/download/SQLSVR2000/jdbc/2000/NT45XP/EN-US/setup.exe。由于本人水平有限,文中不当之处请大家批评指正。
1.尽量减少对数据库元数据方法的使用
    同样是产生一个ResultSet对象,DatabaseMetaData 对象的方法比其它JDBC方法相对要慢,因此平繁使用该方法会降低系统的性能。
 在程序中应当对产生的结果集信息进行高速缓存,比如将getTypeInfo()返回的结果集存入Vector或Hashtable中,这样可大大提高程序的效率。
2.应避免的方法调用模式
    在方法调用时应当尽量避免传入null做为参数,虽然有时能执行成功,但这对DB Server负担很重。其实在很多情况下所需的参数是已知的。比如:
    //这里略去了捕获违例代码(下同)。
    DatabaseMetaData md=...;
    ResultSet rs=md.getTables(null,null,"authors",null);//取得MS SQL SERVER pubs数据库中authors表的信息.
    应当写成:
       ResultSet rs=md.getTables("northwind","dbo","authors",new String[]{"TABLE"});
    这样使程序更有效可靠。
3.使用哑查询语句来取得表的相关特征信息
    一个哑查询语句(Dummy Query,译为哑查询不知是否恰当,愿与大家探讨)不会产生有记录的结果集,比如:select * from tableName where 1=0,因为条件永不成立,DB Server 不会执行这条语句。因此,在不需产生记录行的情况下,哑查询能极大地提高程序的执行效率。比如我们要了解一个表的有关列信息时,上面的语句比select * from tableName这个语句要高效得多,后者数据库服务器要检索所有的行并返回一个记录集,而前者不需要。针对这一问题,JDBC可以有以下两种方法:
    case 1:使用getColumns()方法
        //getColumns()是DatabaseMetaData的一个方法,其有关信息请查阅JDK1.3文档

热门栏目