定义视图的SQL语句为CREATE VⅠEW,其一般格式为CREATE VⅠEW<视图名>[(列名[,……但在如下三种情况下必须明确指定组成视图的所有列名。......
2023-11-24
在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。(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。要注意的是,方法的返回值的数据类型要与数据库中定义的该列的数据类型相兼容。
定义视图的SQL语句为CREATE VⅠEW,其一般格式为CREATE VⅠEW<视图名>[(列名[,……但在如下三种情况下必须明确指定组成视图的所有列名。......
2023-11-24
T-SQL对SQL Server的使用非常重要,所有应用程序与SQL Server的通信都通过向服务器发送T-SQL语句来进行,是唯一能和SQL Server数据库系统进行交互的语言。......
2023-11-23
图6.2.1if语句执行流程6.2.1.html根据两个变量的大小关系,使用if条件语句输出对应提示,如下所示。图6.2.2if语句if语句中的表达式布尔值为true,执行语句console.log;,执行完成之后继续执行console.log; 。◇ 表达式expression布尔值为false时,执行语句secondStatement。◇ 支持加入多个else if条件语句。if语句的其他限制:◇ if语句是必选项,else if和else语句是可选项。......
2023-11-08
创建视图是通过CREATE VIEW语句实现的。当视图指定为TEMPTABLE时,将在创建视图的同时创建相应的TEMPORARY表。如果为视图指定了UNDEFINED算法,当查询指示其结果和视图结果是一对一关系时,MySQL将选择TEMPTABLE。DEFINER子句确定在视图执行时将检查哪个用户账户的权限来确定是否有适当的权限执行这个视图。......
2023-10-29
1)例子(一)正确使用SQL的例子(一)如图5-12所示。因此B.ORDD = : TrDay或B.ORDD = : WorkDay的扫描范围较窄,使用索引时响应速度非常快。在这种情况下,优化器使用OR从内部分为两个SQL语句并各自使用索引,再将执行结果合并为一个结果。图5-13正确使用SQL的例子(二)问题:连接的两个表的条件中决定扫描范围的条件是"AND SUBSTR LIKE : IN_org_cd AND SUBSTR < 600000"。因此可按以下方法变更条件公式并使用相应索引。......
2023-11-01
图5.2交叉连接的例子2.内连接内连接将返回与连接条件相匹配的数据行。图5.3表employee和department使用内连接查询两个表中的数据,如图5.4所示。图5.6使用右外连接的例子4.自连接自连接就是将表与它自身相关联,进行自连接时通过给表起不同的别名来区分一个表的两个实例。......
2023-10-29
SQL修改数据操作语句的一般格式为:UPDATE<表名>SET<列名>=<表达式>[,<列名>=<表达式>][,……UPDATE选课SET成绩=成绩*1.2WHERE课程号=;解题说明:该例中的元组修改条件是数据库课程,而在选课表中只有课程号而无课程名。因此,要通过在课程表中查找课程名为数据库的课程号,才能确定修改的元组,所以该题的WHERE子句中使用了子查询。......
2023-11-24
SQL Server还包括事务处理语句,将SQL Server语句集合分组后形成单个的逻辑工作单元。事务处理语句包括:BEGⅠN TRAN SACTⅠON语 句、COMMⅠT TRANSACTⅠON语 句、ROLLBACK TRANSACTⅠON语句和SAVE TRANSACTⅠON语句。如果将事务回滚到保存点,则根据需要必须完成其他剩余的T-SQL语句和COMMⅠT TRANSACTⅠON语句,或者必须通过将事务回滚到起始点完全取消事务。若要取消整个事务,请使用ROLLBACK TRANSACTⅠON transaction_name语句。这将撤销事务的所有语句和过程。......
2023-11-24
相关推荐