图5.2交叉连接的例子2.内连接内连接将返回与连接条件相匹配的数据行。图5.3表employee和department使用内连接查询两个表中的数据,如图5.4所示。图5.6使用右外连接的例子4.自连接自连接就是将表与它自身相关联,进行自连接时通过给表起不同的别名来区分一个表的两个实例。......
2025-09-30
在JSP中,对数据库的操作都是通过JDBC API完成的。Java程序可以通过JDBC向数据库发出命令,数据库管理系统获得命令后执行请求,并将执行的结果通过JDBC返回给Java程序。JDBC主要做三件事:与数据库建立连接、发送SQL语句、返回处理结果。
JDBC API是一套用Java语言编写的类库,在java.sql包中,编写与数据库相连的Java程序首先要将该包引入到程序中。编写直连数据库程序的步骤如下:
(1)加载与注册驱动程序
Oracle公司随Oracle数据库软件包提供了JDBC所用的Oracle驱动程序oracle.jdbc.driver.OracleDriver,Oracle11g将该程序压缩在ojdbc6.jar文件中,位于Oracle数据库安装目录下的jdbc目录下。将此文件复制到Resin安装目录的lib目录下(见“实训6”)。当加载驱动程序时,JSP容器(Resin)会自动到lib目录下寻找驱动程序。
使用oracle.jdbc.driver.OracleDriver驱动程序连接Oracle数据库是直连方式,效率高、速度快。下面两种连接语句可任选一种:
●使用java.sql包中的public static DriverManager.registerDriver(Driver driver)方法加载驱动程序,其参数是实现Driver接口的驱动程序对象。加载Oracle驱动程序的语句如下:
因此方法不够灵活,一般使用下一种方式连接。
●使用java.lang包中的Class.forName(String className)方法加载驱动程序。语句如下:
java.lang.Class是一个比较特殊的类,它用于封装被装入到JVM(Java虚拟机)中的类(包括类和接口)的信息。
Class.forName("oracle.jdbc.driver.OracleDriver")首先会将OracleDriver类(即Oracle数据库驱动程序)装入JVM,并返回与之关联的Class对象。JVM装入OracleDriver类后对其进行初始化。需要注意的是:forName方法的参数是类的完整限定名(即包含包名)。
上面两种连接语句若未找到Oracle数据库驱动程序oracle.jdbc.driver.OracleDriver,则会抛出没有找到驱动程序异常:ClassNotFoundException。
(2)连接数据库
数据库驱动程序加载后就可以使用java.sql包中DriverManager类的方法:
建立与数据库的连接。它返回值的数据类型是Connection对象,Connection对象代表与数据库的连接。参数url定义连接数据库的协定、数据库所在主机的IP地址、端口号、数据库标识名,对于Oracle数据库,url的值是"jdbc:oracle:thin:127.0.0.1:1521:mis",其中“jdbc:oracle:thin”是协定;“127.0.0.1”代表本机IP地址,若Oracle数据库服务器与Resin应用服务器安装在了同一台主机上,无论主机的IP地址是如何定义的,如先前定义的主机IP地址是192.168.2.1,此时要使用127.0.0.1或localhost表示本机IP地址;“1521”是Oracle服务器的端口号;“mis”是数据库SID标识,是在安装Oracle时由用户定义的。参数user是用户建立的数据库名,参数password是与user关联的进入数据库的密码。(在“实训7——使用OEM建立新账户”的5)中建立了用户“db_student”和口令“student123student”)具体语句如下:
上面语句若连接成功,将返回Connection(连接)对象con。(https://www.chuimin.cn)
(3)创建执行SQL语句的Statement对象
Statement对象用于将SQL语句发送到数据库中。
JDBC连接Oracle成功后,获得了Connection(连接)对象con,通过con可以获得State-ment对象。语句如下:
第一个参数是游标类型参数:ResultSet.TYPE_SCROLL_INSENSITIVE指明可以用游标任意定位结果集中的记录,当数据库中的数据改变后,先前获得的结果集不能反映所做的改变。
第二个参数是数据一致性参数:ResultSet.CONCUR_READ_ONLY表示不能更新结果集的内容。
当缺省以上两个参数时,“Statement stmt=con.createStatement();”表示默认的Result-Set对象仅有一个向前移动的游标,不可更新。因此,游标只能在结果集的每一行停留一次,并且只能按从第一行到最后一行的顺序进行。游标类型参数请见附录J,数据一致性参数请见附录K。
(4)读取或修改数据库中的数据
JDBC通过向数据库发送SQL语句完成对数据库的操作。Statement类中封装了向数据库发送SQL语句的方法:
●查询
ResultSet executeQuery(String sql),该方法将查询的结果返回给ResultSet结果集对象。例如:
●修改
int executeUpdate(String sql),执行给定SQL语句,该语句可能为INSERT、UPDATE或DELETE语句,或者不返回任何内容的SQL语句(如SQL DDL语句)。例如:
(5)处理结果集
使用Statement对象的方法executeQuery(Stringsql)将会返回满足查询条件的数据库结果集的ResultSet对象。ResultSet对象是一个数据表,它包含查询所返回的列(字段)名和相应的值。结果集可能有多行,ResultSet对象具有指向其当前数据行的游标。最初,游标被置于第一行之前。ResultSet对象封装了读取游标指定的行中的数据和移动游标的方法,请参考附录L。要注意的是,方法的返回值的数据类型要与数据库中定义的该列的数据类型相兼容。
相关文章
图5.2交叉连接的例子2.内连接内连接将返回与连接条件相匹配的数据行。图5.3表employee和department使用内连接查询两个表中的数据,如图5.4所示。图5.6使用右外连接的例子4.自连接自连接就是将表与它自身相关联,进行自连接时通过给表起不同的别名来区分一个表的两个实例。......
2025-09-30
创建视图是通过CREATE VIEW语句实现的。当视图指定为TEMPTABLE时,将在创建视图的同时创建相应的TEMPORARY表。如果为视图指定了UNDEFINED算法,当查询指示其结果和视图结果是一对一关系时,MySQL将选择TEMPTABLE。DEFINER子句确定在视图执行时将检查哪个用户账户的权限来确定是否有适当的权限执行这个视图。......
2025-09-30
1)例子(一)正确使用SQL的例子(一)如图5-12所示。因此B.ORDD = : TrDay或B.ORDD = : WorkDay的扫描范围较窄,使用索引时响应速度非常快。在这种情况下,优化器使用OR从内部分为两个SQL语句并各自使用索引,再将执行结果合并为一个结果。图5-13正确使用SQL的例子(二)问题:连接的两个表的条件中决定扫描范围的条件是"AND SUBSTR LIKE : IN_org_cd AND SUBSTR < 600000"。因此可按以下方法变更条件公式并使用相应索引。......
2025-09-30
而重中之重仍然是调优访问数据库SQL语句的方法,因为很少能像SQL调优这样可以在短时间内以低成本得到效果。因此,为了性能考虑,开发者应不遗余力地投入时间和精力进行SQL调优。如果对未优化的SQL进行调优,则计划增设容量的许多企业都无须执行容量增设。大量数据排序的SQL或者大量访问数据块的未优化的SQL,可能会过量地使用内存。就因为这种现象,才会因未优化的SQL而出现磁盘I/O增加的情况。SQL的优化过程必然也涉及索引的优化。......
2025-09-30
SORT MERGE JOIN指各自访问两侧表的处理范围后逐一扫描排序结果,同时使用连接条件进行合并的方式。通过SORT MERGE JOIN引导调优的情况几乎不存在,但可能对减少RANDOM ACCESS、大容量处理对象集有效。以下将介绍SORT MERGE JOIN的其他特征以及能保证良好性能的情形。通常NESTED LOOP JOIN对待处理数据量较少的在线应用程序更为有效,因此请勿随意使用SORT MERGE JOIN。......
2025-09-30
ANSI SQL标准提供了安全系统最基本的访问控制级别,主要有以下几种。授权标识是一种区别访问数据库不同部分的基本方法,应用SQL的这种特征,根据不同的访问控制可以将数据库分给各个模式。要执行模块中的SQL语句,必须对授权标识授予必要的权限。1992 SQL标准增加了一条取消权限的REVOKE语句,使用该语句可选择性地逐级取消被授权者的权限。......
2025-09-30
SQL:1999[7]是ISO制定的一个国际标准。可以说SQL3是为面向对象SQL而定义的,计划作为对象-关系数据库管理系统的基础。与SQL-92相比,新的语言增加了面向对象的特征。JTC 1中的分委员会SC32负责数据库的标准问题,其中,WG3负责SQL标准,而WG4关注SQL/MM。......
2025-09-30
对象表的连接顺序和方法不同是为了加快访问速度。因此即使变更连接方法和顺序,结果值也不能有任何变化。连接时表的驱动顺序是性能中的重要组成部分。4)优化器的连接选择对于参与连接条件语句的列,索引位置对优化器决定执行计划时的连接顺序和方法有很大影响。连接列的两侧均无索引时,将SORT MERGE JOIN或HASH JOIN用作连接方法。......
2025-09-30
相关推荐