Java中通过SQL标记完成数据库的操作
一、 SQL标记的表现形式与作用。
我们在看Java的源代码的时候,后续经常会看到如下的表示:
其实这就是一个典型的SQL标记。在JSP语言中,SQL标记主要用来方便的实现对数据的相关操作。如建立数据库连接等等。JSP语言其主要用来动态的获取数据库中的数据,为此在JSP语言中建立与数据库的连接是必须的。同时,JSP语言不适宜完成比较复杂的运算,这些运算往往是放置在JavBeans中来实现。故对于Jsp语言来说,SQL标记主要完成的是数据库连接管理、数据查询等操作。
如上面这个SQL标记,就是简单的定义了一个数据库的信息。在这个SQL标记中,还可以使用其他的参数来定义具体的数据库信息。如可以定义数据源的JNDL名字或者驱动器管理器名称等等,在这里主要可以用到VAR、Driver、URL三个参数。Driver主要用来决定连接数据库所采用的数据库驱动程序。这个参数直接关系到数据库连接是否成功。这里需要注意的是,不同的数据库所采用的数据库驱动是不同的,如Oracle数据库与SQLServer数据库。这也就要求开发人员在开发应用程序的时候,需要根据不同的数据库采用不同的驱动程序。特别是需要考虑,当某个应用程序能够采用多种数据库的情况下,如何让系统在合适的情况下采用合适的驱动程序。一般来说,采用什么样的数据库在系统部署时就已经确定了,在系统安装时,都会让系统人员选择所采用的数据库。即在系统基本参数那边,会有所采用的数据库的相关信息。为此在使用SQL标记的时候,可能还需要结合使用IF或者Case等判断语句,来决定所采用的数据库驱动程序。
二、 SQL标记从数据库中查询数据。
SQL标记在JSP语言中使用的最广泛的就是动态的从数据库中获取相关的数据。此时需要使用到的SQL标记是sql:query。这个标记主要用来实现SQL语句访问数据库并返回一个结果。也就是说,一般的SQL查询语句,如Select语句JSP语言是不认识的。开发人员往往将其封装在SQL标记中传递给数据库。数据库运行之后,SQL标记再将相关的结果传递给应用程序。在使用这个参数的时候,笔者认为需要注意以下几点。
一是需要先建立数据库的连接。SQL:Query标记主要用来实现SQL语句访问数据库并从数据库中返回相关的结果。这也就是说,在使用这个标记的时候,必须要先建立起数据库的连接。否则的话,系统就会报错。
二是需要注意,在查询语句中尽量采用参数。如现在从一个产品中查询相关的数据。如果这个产品中有10万条记录,而在查询语句中又没带相关的参数,那么此时数据库就会返回全部的记录。此时就会影响系统响应的速度。而且从用户的角度讲,他也没有比较了解到全部的信息。故一般都会在sql:query标记中带上相关的参数。如果要实现这个需求的话,开发人员可以通过Param标记在sql:query中定义所需要采用的参数。不过参数的定义一定要正确。而且所采用的数据库表的名字一定要是表中已经存在的字段。特别需要注意的是,不同的数据库可能对于字段大小写是否敏感的要求是不同的。如Oracle数据库中,字段名称大小写是等价的。但是字段中保存的值大小写是敏感的。为此在参数中传递字段名或者参数值的时候,需要考虑对于大小写的处理方式。
三是需要考虑,是否让查询语句带上默认的参数。有时候用户可能会偷懒,没有在查询界面上输入参数。此时如果没有默认参数的话,系统响应的速度就可能会比较慢。数据库管理员可能会多次提醒开发人员要采用默认参数来改善数据库的查询效率。如现在需要查询产品信息表。在Web界面中一次可能只能够显示50条记录。在这种情况下,如果一次性的将数据从数据库中查询出来,会降低系统的性能。此时比较合理的做法是,给sql:query标记带上一个默认的参数。在用户没有输入任何限制条件的话,sql语言从数据库中每次查询出的数据是50条记录。当用户需要更多的信息,点击下一页时再执行查询语句一次,显示后面的50条记录。
由于数据库查询优化很大部分依赖于查询过程中的Where语句。在sql:query标记中则是通过Param标记来完成的。为此出于提升应用系统性能的目的考虑,最好给SQL语句提供默认的参数。具体参数如何设置,就需要根据应用系统的实际情况了。如对于销售订单,可以默认显示当天的订单信息。对于产品信息,则可以默认设置为显示最近建立的50个产品信息,等等。