第6章 JDBC数据库访问_第1页
第6章 JDBC数据库访问_第2页
第6章 JDBC数据库访问_第3页
第6章 JDBC数据库访问_第4页
第6章 JDBC数据库访问_第5页
已阅读5页,还剩118页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第6章JDBC数据库开发6.1创建数据库连接6.2查询记录

(P163_03.jsp)

分页显示记录集(P169_04.jsp)

创建搜索页(P174_06.jsp)

创建主/详细页(P177_08ab.jsp)6.3添加记录(P184-_10.jsp)6.4更新记录(P192-_12ab.jsp)6.5删除记录(P202-_14.jsp)JavaDatabaseConnectivity,Java数据库连接数据库是以一定的方式组织并存储在计算机存储设备上、能够为不同用户所共享的、与应用程序彼此独立的相互关联的数据的集合。基本的数据模型有三种:层次模型系统、网络模型系统和关系模型系统。关系模型系统具有数据结构简单灵活、易学易懂且数学基础雄厚等特点,发展到现在已成为数据库的标准。常见的中小型数据库系统有Access和MySQL,大型数据库系统有SQLServer和Oracle。

数据库介绍

关系数据库的标准语言SQLSQL(structuredQueryLanguage)结构化查询语言是关系数据库的标准语言。1974年由Boyce和Chamberlin提出,1979年IBM公司首次在其关系数据库系统SystemR上实现了SQL。1986年由ANSI批准成为美国国家标准。随即由ISO批准成为国际标准。历经两次修改(SQL-89,SQL-92)目前,几乎所有的关系数据库管理系统都支持SQL。SQL的特点功能一体化集DDL,DML,DCL于一身高度的非过程特性用户只需告诉DBMS干什么,而不必告诉它应该怎么干。操作的对象和结果均为集合两种使用方式,统一的语法结构。交互式,嵌入式易学易用语法简单,接近英语口语,完成核心功能的动词只有8个。create,drop;select,insert,update,delete;grant(授权),revoke(撤销授权)SQL的数据定义语句SQL的数据定义包括三个部分:定义基本表,定义视图,定义索引。定义基本表的相关语句:createtable,droptable,altertable定义视图的相关语句:createview,dropview定义索引的相关语句:createindex,dropindexSQL根据其功能,可以归纳成为以下3种:DataDefinitionLanguage(DDL):这一类的SQL语法,用以进行数据库结构的维护操作,例如建立数据表、调整字段名称、删除现存数据表等等。DataManipulationLanguae(DML):提供数据库内容、数据的搜寻操作,甚至修改数据内容等等。DataControlLanguage(DCL):提供数据库安全的相关SQL语句,例如设定用户权限,特定数据内容操作的安全规范等等。Sqlserver2000Sqlserver2000:是一个软件,微软公司于2000年8月推出的新一代的关系型网络数据库管理系统,一个由微软开发的数据库管理系统,时下用的非常普遍。四个版本:

professional专业/标准版(适合用作小型工作组和部门数据库服务器)

enterprise企业版---适合作为整个企业的数据库服务器常用【不能安装在专业版系统上】personal个人版(用于在客户机上储存少量数据)

develop开发版使用结构示意图网页姓名密码Email提交网页服务器数据库12表:人员姓名密码EmailAccessSqlserver2000姓名密码Email张三12321123@12.c姓名密码234@12.dl设计视图内容视图Access与Sqlserver2000的比较数据库某表1表2表3Access数据库数据库某1表1表2表3数据库某2表1表2表3数据库服务器某Sqlserver2000数据库服务器Access:小型网站,同时访问人数不能超过1000。访问速度慢Sqlserver2000:大型网站,企业级的数据存取应用。访问速度快。Sqlserver2000的企业管理器数据库服务器数据库数据表

数据库主要由数量不等的数据表所组成,数据表本身用来储存特定内容的数据并建立彼此间的关联。

数据库ODBC

利用程序连接数据库之前,首先必须在Windows控制台里的ODBC数据来源选项中,依所使用的数据库种类来选择其专属的ODBC驱动程序,并指定ODBC数据库的来源。JDBC驱动程序

JDBC(JavaDataBaseConnectivity)是使用Java所编写的数据库驱动程序,因此具有跨平台的特性,Java程序或者JSP程序都必须通过此类的驱动程序来连接数据库。下列网址提供特定特定数据库系统的专署JDBC驱动程序。/products/jdbc/drivers

Msaccess新建数据库(1)

Msaccess新建数据库

(2)Msaccess新建数据库

(3)MSACCESS数据表结构示例(1)字段说明字段说明ID作者编号eMail作者电子邮件Name作者姓名Phone作者连络电话Sex作者性别Address作者连络地址MSACCESS数据表结构示例(2)字段本身包含几个要素,分别是“字段名称”、“数据类型”和“说明”这3个部份。字段名称、数据类型代表一个特定字段的名称以及该字段所能储存的数据内容。说明是存放这个字段的说明,这一部分能够省略。MSACCESS数据表结构示例(3)数据类型说明文本用以储存一般字符类型的数据备注

储存大量的文字数据,例如备注类型的数据内容数字

储存数字类型的数据,例如整数浮点数等等日期/时间储存时间日期等类型的数据内容货币

储存需要高精确度,使用于货币金额计算的数据自动编号使用于本身作为编号的字段,例如订单号码,于每次新增一条数据的时候,自动新增号码是/否储存TRUE或是FALSE等布尔类型数据MSACCESS数据类型

字段类型名称数据类型

说明数字byte字节整数smallint整数int长整数single单精准数double双精准数文本char(n)记录最大为n个字符的数据,n最大值为255备注longtext字符串数据类型,可记录最大字符串长度为64k日期/时间date日期数据自动编号counter字段中的数值会自动递增MSACCESS字段属性

字段属性说明primarykey设定字段为主索引unique设定主索引字段的值不可重复notnull设定字段内容不允许为空MSACCESS连接数据库加载JDBC驱动程序

CLASS.FORNAME("SUN.JDBC.ODBC.JDBCODBCDRIVER“)连接数据库

CONNECTIONOBJCONNECTION=DRIVERMANAGER.GETCONNECTION("JDBC:ODBC:DATABASE","USERID","USERPWD")关闭数据库

OBJCONNECTION.CLOSE()SQLSERVER尽管SQL语言是一种标准的关系数据库语言,但不同厂商的DBMS所支持的SQL仍有一些差异。这主要是因为各厂商根据自己的需要对SQL作了一些扩充。本课程在介绍操作实例时使用微软公司的SQLSERVER。它在SQL语法,数据库功能上与SYBASE公司的SYBASESQLSERVER基本相同。既有可以在单机上运行的版本,也有可以在网络上运行的版本。是广泛使用的大型数据库管理系统之一。SQLSERVER的数据类型字符数据字符数据由字母、符号和数字组成。例如,有效字符数据包括“928”、“JOHNSON”和“(0*&(%B99NH

JKJ”。在MICROSOFT®SQLSERVER™2000中,字符数据使用CHAR、VARCHAR和TEXT数据类型存储。当列中各项的字符长度数可变时可用VARCHAR类型,但任何项的长度都不能超过8KB。当列中各项为同一固定长度时使用CHAR类型(最多8KB)。TEXT数据类型的列可用于存储大于8KB的ASCII字符。SQLSERVER的数据类型--数字数据之整数数据整型数据由负整数或正整数组成,如-15、0、5和2509。在Microsoft®SQLServer™2000中,整型数据使用bigint、int、smallint和tinyint数据类型存储。bigint数据类型可存储的数字范围比int数据类型广。int数据类型比smallint数据类型的存储范围大,而smallint的数值范围又比tinyint类型大。使用bigint数据类型存储从-2^63(-9223372036854775808)到2^63-1(9223372036854775807)范围内的数字。存储大小为8个字节。int数据类型的存储范围是-2,147,483,648至2,147,483,647(每个值需4个字节的存储空间)。smallint数据类型的存储范围只有-32,768至32,767(每个值需2个字节的存储空间),tinyint数据类型只能存储0至255范围内的数字(每个值需1个字节的存储空间)。SQLSERVER的数据类型--数字数据之小数数据Decimal数据包含存储在最小有效数上的数据。在SQLServer中,小数数据使用decimal或numeric数据类型存储。存储decimal或numeric数值所需的字节数取决于该数据的数字总数和小数点右边的小数位数。例如,存储数值19283.29383比存储1.1需要更多的字节。在SQLServer中,numeric数据类型等价于decimal数据类型。近似数字(浮点)数据包括按二进制计数系统所能提供的最大精度保留的数据。在SQLServer中,近似数字数据以float和real数据类型存储。例如,分数1/3表示成小数形式为0.333333(循环小数),该数字不能以近似小数数据精确表示。因此,从SQLServer获取的值可能并不准确代表存储在列中的原始数据。又如,以.3,.6,.7结尾的浮点数均为数字近似值。SQLSERVER的数据类型--日期和时间数据日期和时间数据由有效的日期或时间组成。例如,有效日期和时间数据既包括"4/01/9812:15:00:00:00PM",也包括"1:28:29:15:01AM8/17/98"。在Microsoft®SQLServer™2000中,日期和时间数据使用datetime和smalldatetime数据类型存储。使用datetime数据类型存储从1753年1月1日至9999年12月31日的日期(每个数值要求8个字节的存储空间)。使用smalldatetime数据类型存储从1900年1月1日至2079年6月6日的日期(每个数值要求4个字节的存储空间)。SQLSERVER的数据类型--二进制数据二进制数据由十六进制数表示。例如,十进制数245等于十六进制数F5。在Microsoft®SQLServer™2000中,二进制数据使用binary、varbinary和image数据类型存储。指派为binary数据类型的列在每行中都是固定的长度(最多为8KB)。指派为varbinary数据类型的列,各项所包含的十六进制数字的个数可以不同(最多为8KB)。image数据列可以用来存储超过8KB的可变长度的二进制数据,如MicrosoftWord文档、MicrosoftExcel电子表格、包含位图的图像、图形交换格式(GIF)文件和联合图像专家组(JPEG)文件。除非数据长度超过8KB时用image数据类型存储,一般宜用varbinary类型来存储二进制数据。建议列宽的定义不超过所存储的二进制数据可能的最大长度。SQLSERVER的数据类型--货币数据货币数据表示正的或负的货币值。在Microsoft®SQLServer™2000中使用money和smallmoney数据类型存储货币数据。货币数据存储的精确度为四位小数。可以存储在money数据类型中的值的范围是-922,337,203,685,477.5808至+922,337,203,685,477.5807(需8个字节的存储空间)。可以存储在smallmoney数据类型中的值的范围是-214,748.3648至214,748.3647(需4个字节的存储空间)。如果数值超过了上述范围,则可使用decimal数据类型代替。SQLServer之SQLServerEnterpriseManagerSQLServer企业管理器是Microsoft®SQLServer™2000的主要管理工具,它提供了一个遵从Microsoft管理控制台(MMC)的用户界面,使用户得以:定义运行SQLServer的服务器组。将个别服务器注册到组中。为每个已注册的服务器配置所有SQLServer选项在每个已注册的服务器中创建并管理所有SQLServer数据库、对象、登录、用户和权限。在每个已注册的服务器上定义并执行所有SQLServer管理任务。通过唤醒调用SQL查询分析器,交互地设计并测试SQL语句、批处理和脚本。唤醒调用为SQLServer定义的各种向导。SQLServer之查询分析器Microsoft®SQLServer™2000SQL查询分析器是一种图形工具,可以使用它进行以下操作:创建查询和其它SQL脚本,并针对SQLServer数据库执行它们。(“查询”窗口)由预定义脚本快速创建常用数据库对象。(模板)快速复制现有数据库对象。(对象浏览器脚本功能)在参数未知的情况下执行存储过程。(对象浏览器过程执行功能)调试存储过程。(T-SQL调试程序)调试查询性能问题。(显示执行计划、显示服务器跟踪、显示客户统计、索引优化向导)在数据库内定位对象(对象搜索功能),或查看和使用对象。(对象浏览器)快速插入、更新或删除表中的行。(“打开表”窗口)为常用查询创建键盘快捷方式。(自定义查询快捷方式功能)向“工具”菜单添加常用命令。(自定义“工具”菜单功能)SQLSERVER创建数据库用SQLServerEnterpriseManager建立学生数据库testdb.db。用查询分析器建立学生数据库testdb.dbusemastergocreate

databasetestdbon(name=testDB_dat,filename='D:\data\testdbdat.mdf',size=1,maxsize=5,filegrowth=1)Logon(name='testDB_log',filename='D:\data\testdblog.ldf',size=1mb,maxsize=5mb,filegrowth=1mb)go基本表的定义createtable命令语法:createtable

[database_name.[owner].|owner.]table_name

({<column_definition>|column_nameascomputed_column_expression

|<table_constraint>::=[constraintconstraint_name]}

|[{primarykey|unique}[,...n]

)[on{filegroup|default}][textimage_on{filegroup|default}]参数说明column-definition:column-namedata-type[notnull][defaultdefault-value]基本表的定义(续一)column-constraint:unique|primarykey|referencestable-name[(column-name)][actions]|check(condition)default-value:string|globalvariable|number|autoincrement|currentdate|currenttime|currenttimestamp|null|user|(constant-expression)基本表的定义(续二)table-constraint:unique(column-name,...)|primarykey(column-name,...)|check(condition)|foreign-key-constraintforeign-key-constraint:[notnull]foreignkey[role-name][(column-name,...)]referencestable-name[(column-name,...)][actions][checkoncommit]action:on{update|delete}{cascade|setnull|setdefault|restrict}基本表的定义举例定义表系(department),表名为d,包括系编号d#和系名dn,以系编号为主码。createtabled(d#char(2)notnull,dnchar(20),primarykey(d#))定义表学生(student),表名为s,包括学号s#、姓名sn、所在系的编号d#、和年龄sa。以学号为主码,系编号为外部码,引用表d中的系编号。createtables(s#char(8)notnullprimarykey,snchar(8)notnull,d#char(2)notnullreferencesd(d#),saint)基本表的定义举例定义表课程(course),表名为c,包括课程编号c#,课程名cn,先修课程编号pc#。课程编号为主码。createtablec(c#char(2)notnull,cnchar(20)notnull,pc#char(2),primarykey(c#));定义表“学生选课”,表名为sc,包括学号s#、课程号c#、成绩g。以学号和课程编号为主码。学号为外部码,引用表s中的学号。课程编号为外部码,引用表c中的课程编号。

createtablesc(s#char(8)notnullreferencess(s#),c#char(2)notnullreferencesc(c#),gint,primarykey(s#,c#));基本表的删除语法:droptable[owner.]tablename举例:删除表scdroptablescQuestion:若在删除表sc前删除表c,则会发生错误。为什么?基本表的修改(AlterTable)通过更改、添加、除去列和约束,或者通过启用或禁用约束和触发器来更改表的定义。altertabletable{[altercolumncolumn_name

{

new_data_type[(precision[,scale])]

[collate<collation_name>]

[null|notnull]

|{add|drop}rowguidcol}]

|add

{[<column_definition>]

|column_nameascomputed_column_expression

}[,...n]

|[withcheck|withnocheck]add

{<table_constraint>}[,...n]

|drop

{[constraint]constraint_name

|columncolumn}[,...n]

|{check|nocheck}constraint

{all|constraint_name[,...n]}

|{enable|disable}trigger

{all|trigger_name[,...n]}}基本表的修改举例在表s中增加一列生日(birthday),类型为日期时间型:altertablesaddbirthdaydatetimenull修改课程表,使课程名的长度为30个字节。altertablecaltercolumncnchar(30)索引的定义(createindex)create[unique][clustered|nonclustered]indexindex_name

on{table|view}(column[asc|desc][,...n])[with<index_option>[,...n]][onfilegroup]<index_option>::=

{pad_index|

fillfactor=fillfactor|

ignore_dup_key|

drop_existing|

statistics_norecompute|

sort_in_tempdb

}

本命令在指定的表及指定的列上建立索引,索引由dbms自动使用以提高对数据库的查询速度和对查询结果排序的速度。索引举例设有一职工表employee包含两列:姓emp_lname和名emp_fname。下例建立一个含这两个列的索引。createindexemployee_name_indexonemployee(emp_lname,emp_fname)在表s为列d#建立索引:createindexdepartment_id_indexons(d#)查看索引使用存储过程sp_helpindex报告有关表或视图上索引的信息。语法sp_helpindex[@objname=]'name'参数[@objname=]'name'是当前数据库中表或视图的名称。name的数据类型为nvarchar(776),没有默认值。例如:查看学生表s上的索引sp_helpindexs索引的删除语法:dropindex'table.index|view.index'[,...n]例:删除索引employee_name_indexdropindexemployee.employee_name_index删除索引department_id_indexdropindexs.department_id_indexSQL的数据操纵语句SQL的数据操纵语句是指追加、修改、删除表中记录的有关语句。我们将它与数据查询语句分开,一方面是因为操纵语句会改变数据库中的内容,查询语句不会。另一方面是因为数据操纵语句的语法相对较简单。然而,为了查看数据操纵的结果,我们先简单介绍数据查询语句的最基本形式。简单的数据查询语句select语法:select{*|selectlist}fromtablename举例:查看学生表中的记录select*froms追加记录(元组)insert语法:格式1(作用:插入一行到指定的表中)insertinto[owner.]table-name[(column-name,...)]values(expression|default,...)格式2(作用:从其他表中插入一行或多行记录)insertinto[owner.]table-name[(column-name,...)]select-statementinsert语句举例插入记录到表d中insertintod(d#,dn)values('01','计算机系');insertintod(d#,dn)values('02','经贸学院');insertintod(d#,dn)values(‘03’,‘化工学院’);insertintosvalues('s01','王芳','01',20,null)插入记录到表c中insertintoc(c#,cn,pc#)values('c1','计算机基础',NULL);insertintoc(c#,cn,pc#)values('c2','数据库原理','c1');insertintoc(c#,cn,pc#)values('c3','英语',NULL);insertintoc(c#,cn,pc#)values('c4','高等数学',NULL);修改记录内容(Update)语法:updatetable-listsetcolumn-name={expression|subquery},...[wheresearch-condition]作用:将指定表table-list中符合条件search-condition的行的相应列column-name修改为表达式expression的值或子查询subquery的值。将所有学生的年龄增加1岁:updatessetsa=sa+1将学生li的年龄增加1岁:updatessetsa=sa+1wheresn=‘li’删除记录delete语法:deletefrom[owner.]table-name[wheresearch-condition]作用:删除指定表table-name中,符合条件search-condition的记录。删除表s中,年龄大于25岁的学生。deletefromswheresa>25删除表sc中的所有记录:deletefromscJDBC简介

JDBC全称为JavaDataBaseConnectivitystandard,它是一种可用于执行SQL语句的JavaAPI。它由一些Java语言编写的类和界面组成,JDBC提供了一种标准的应用程序设计接口,使开发人员可以用纯Java语言编写完整的数据库应用程序。1、JDBC的任务(简单地说,JDBC能完成下列三件事) (1)同数据库建立连接(2)向数据库发送SQL语句 (3)处理数据库返回的结果2、JDBC支持两层模型,也支持三层模型访问数据库。

6.1.1JDBC驱动程序类型1、JDBC-ODBC桥2、Java到本地API3、JDBC网络纯Java驱动程序4、Java到本地数据库协议jsp运用sql创建web界面

JDBC实现数据库的操作的步骤JDBCAPI是通用接口,在与数据库连接时先要加载。加载驱动程序有很多方法,最常用的就是先把驱动程序类溶解到内存中,作为“当前”驱动程序。内存中可以有多个驱动程序,但只有现在加载的这个作为首选连接的驱动程序。利用JDBC实现数据库的操作一般可分为如下几个步骤。1、加载jdbc驱动程序。2、定义连接url3、通过DriverManager到得一个与数据库连接的句柄4、创建statement对象。5、执行查询或更新。6、查看返回的结果集。7、关闭结果集对象。8、关闭statement对象。9、关闭连接接口。6.1.2安装JDBC驱动程序1.安装MicrosoftSQLServer2000JDBC驱动程序安装文件:mssqlserver.jar、msbase.jar、msutil.jar2.安装MicrosoftSQLServer2005JDBC驱动程序安装文件:sqljdbc.jar的文件3.安装MySQLJDBC驱动程序安装文件:mysql-connector-java-3.0.17-ga-bin.jar4.安装OracleJDBC驱动程序安装文件:classes12.jar以上驱动程序的安装位置均为:$CATALINA_HOME/common/lib6.1.3加载JDBC驱动程序加载和注册一个JDBC数据库驱动程序:

Class.forName(className);常用JDBC数据库驱动程序类名实现数据库连接创建到指定数据库的连接:Connectionconn=DriverManager.getConnection(url,user,password);url参数格式连接一个ODBC数据源时参数url格式:

jdbc:odbc:dnsName使用SQLServer2000JDBC驱动程序连接数据库时参数url: jdbc:microsoft:sqlserver://host:port;DatabaseName=dbName使用SQLServer2005JDBC驱动程序连接数据库时参数url格式: jdbc:sqlserver://host:port;DatabaseName=dbName连接MySQL数据库时url参数的格式: jdbc:mysql://host:port/dbName连接Oracle数据库时url参数的格式: jdbc:Oracle:thin://@host:port:dbNameP163Students表的结构对students表进行sql操作select@@versionselect*fromstudentsselect*fromstudentswhereclass='0501'andstudentsex='男’insertintoStudentsvalues('20050207','刘玉倩','女','1998-12-29','多媒体技术','0502',1,'lyq@163.com')insertintoStudents(StudentID,StudentName,StudentSex,Birthdate,Major)values('20050105','李云飞','男','1988-5-18','计算机应用‘)updateStudentssetMajor='计算机网络技术',email='wangmh@'wherestudentname='汪江涛’deletefromstudentswherestudentid='20050207'P163page6_03.jsp(1)

<%rs.close();conn.close();%>P163page6_03.jsp(2)6.1.4实现数据库连接创建到指定数据库的连接:Connectionconn=DriverManager.getConnection(url,user,password);url参数格式连接一个ODBC数据源时参数url格式:

jdbc:odbc:dnsName使用SQLServer2000JDBC驱动程序连接数据库时参数url:jdbc:microsoft:sqlserver://host:port;DatabaseName=dbName使用SQLServer2005JDBC驱动程序连接数据库时参数url格式:jdbc:sqlserver://host:port;DatabaseName=dbName连接MySQL数据库时url参数的格式:

jdbc:mysql://host:port/dbName连接Oracle数据库时url参数的格式:

jdbc:Oracle:thin://@host:port:dbName6.1.5在Dreamweaver中创建数据库连接打开JSP页,选择“窗口”→“数据库”命令。在“数据库”面板上单击加号按钮,并从弹出菜单中选择驱动程序。如果菜单中没有列出所需要的驱动程序,可选择“自定义JDBC连接”。设置连接参数:输入连接的名称。注意不要在该名称中使用任何空格或特殊字符。输入驱动程序的连接参数,包括驱动程序完全限定类名、要连接的数据库的URL、用户名和密码。指定要使用的JDBC驱动程序的位置,通常应该选择“在测试服务器上使用驱动程序”选项。单击“测试”按钮。6.2.1SELECT语句SELECT<fieldList>[INTO<newTable>]FROM<dataSource>[WHERE<searchCondition>][ORDERBY<orderByExpression>[ASC|DESC]]其中SELECT子句用于指定输出字段;INTO子句的作用是将检索结果存储到一个名为newTable的新表中;FROM子句用于指定要检索的数据来源;WHERE子句用于指定对记录的搜索条件;ORDERBY子句用于对检索到的记录进行排序处理。6.2.2使用JDBCAPI创建记录集1.Connection接口Connection接口的常用方法voidclose():立即释放此Connection对象的数据库和JDBC资源StatementcreateStatement():创建一个Statement对象来将SQL语句发送到数据库CallableStatementprepareCall(Stringsql):创建一个CallableStatement对象来调用数据库存储过程PreparedStatementprepareStatement(Stringsql):创建一个PreparedStatement对象来将参数化的SQL语句发送到数据库6.2.2使用JDBCAPI创建记录集2.Statement及其子接口java.sql.Statement接口用于执行静态SQL语句并返回所生成的结果。Statement接口有一个PreparedStatement子接口,用于对SQL语句进行预编译,然后可以高效地多次执行该语句。PreparedStatement接口有一个CallableStatement子接口,用于执行数据库中的存储过程。创建Statement对象: Statementstmt=conn.createStatement();6.2.2使用JDBCAPI创建记录集Statement接口的常用方法voidclose():立即释放此Statement对象的数据库和JDBC资源booleanexecute(Stringsql):执行给定的SQL语句,该语句可能返回多个结果ResultSetexecuteQuery(Stringsql):执行给定的SQL语句,该语句返回单个ResultSet对象intexecuteUpdate(Stringsql):执行给定SQL语句,该语句可能为INSERT、UPDATE或DELETE语句,或者不返回任何内容的SQL语句(如SQLDDL语句)6.2.2使用JDBCAPI创建记录集2.Statement及其子接口PreparedStatement接口的常用方法booleanexecute():在此PreparedStatement对象中执行SQL语句,该语句可以是任何SQL语句ResultSetexecuteQuery():在此PreparedStatement对象中执行SQL查询,并返回一个ResultSet对象intexecuteUpdate():在此PreparedStatement对象中执行SQL语句,该语句必须是一个INSERT、UPDATE或DELETE语句,或者是一个什么都不返回的SQL语句voidsetObject(intparameterIndex,Objectx):使用给定对象设置指定参数的值70/1926.2.2使用JDBCAPI创建记录集3.ResultSet接口创建ResultSet对象:ResultSetrs=stmt.executeQuery(Stringsql)ResultSetrs=pstmt.executeQuery();ResultSet接口的常用方法:booleanabsolute(introw):将指针移动到此ResultSet对象的给定行编号ObjectgetObject(intcolumnIndex):以Java语言中Object的形式获取此ResultSet对象的当前行中指定列的值ObjectgetObject(StringcolumnName):以Java语言中Object的形式获取此ResultSet对象的当前行中指定列的值booleannext()

将指针从当前位置下移一行。booleanprevious():将指针移动到此ResultSet对象的上一行。booleanwasNull():报告最后一个读取的列是否具有SQLNULL值6.2.3在Dreamweaver中创建记录集1.用简单记录集对话框创建记录集打开要使用记录集的JSP动态页。选择“窗口”→“绑定”命令。在绑定面板中单击加号按钮,选择“记录集(查询)”命令。若出现了高级记录集对话框,请通过单击“简单”按钮。在“名称”文本框中,输入记录集的名称。从“连接”列表框中选取一个连接。在“表”列表框中,选取为记录集提供数据的数据库表。若要使记录集只包括数据库表中的部分字段,请单击“已选定”,然后按住Ctrl键并单击列表中的字段,以选择所需的字段。若要只包括表中的某些记录,请按照下列步骤完成“过滤器”部分。在第一个列表框中选取数据库表中的字段。在第二个列表框中选取一个运算符。在第三个列表框中选取一种测试值类型(包括URL参数、表单变量、cookie、会话变量、应用程序变量以及输入的值)。在文本框中输入测试值。例如,若选择了表单变量,则应在此文本框中输入表单元素的名称。若要对记录进行排序,请选取要作为排序依据的列,然后指定是按升序(1、2、3...或A、B、C...)还是按降序对记录进行排序。6.2.3在Dreamweaver中创建记录集2.用高级记录集对话框创建记录集打开要使用记录集的JSP页。在绑定面板中单击加号按钮,选择“记录集(查询)”命令。如果出现了简单记录集对话框,请通过单击“高级”按钮切换到高级记录集对话框。在“名称”文本框中,输入记录集的名称。从“连接”列表框中选取一个连接。在SQL文本区域中输入一个SQL语句。如果SQL语句包含变量,请在“变量”区域中定义它们的值,方法是单击加号按钮并输入变量名称、默认值(若未返回运行时值,则变量应取该值)和运行时值。6.2.3在Dreamweaver中创建记录集3.管理记录集显示字段值。若要在JSP页中显示记录集内的某个字段值,可从绑定面板上将该字段直接拖放到页面中;也可以先定位插入点,然后在绑定面板上单击一个字段,然后单击绑定面板底部的“插入”按钮。编辑记录集。创建记录集时,新记录集同时出现在绑定面板和服务器行为面板上。若要对已有记录集进行修改,可在服务器面板上单击该记录集,然后利用属性检查器对记录集的属性进行设置。复制记录集。若要在两个JSP页之间复制记录集,可打开包含记录集的JSP页,在绑定面板上右击一个记录集并从弹出菜单中选择“拷贝”命令,然后切换到另一个JSP页,接着在绑定面板上单击鼠标右键并从弹出菜单中选择“粘贴”命令。删除记录集。若要删除一个记录集,可在绑定面板上单击该记录集,然后单击减号按钮。6.2.4分页显示记录集创建记录集之后,就可以在JSP页上显示记录集的内容。如果记录集包含的记录比较多(例如10000条),则必须通过设置在一个页面中显示的记录数目来分页显示记录集,以缩短页面的下载时间。在一个页面中显示的记录构成一个记录组,可以通过记录集导航条在不同记录组之间移动,也可以通过记录计数器显示总页数、当前页号以及记录总数。 1.通过编程实现记录集分页显示 2.通过服务器行为实现记录集分页显示6.2.5创建搜索/结果页为了给JSP应用程序添加搜索功能,通常需要创建一个搜索页和一个结果页。在搜索页中,访问者通过表单输入搜索参数并将这些参数传递给服务器上的结果页,由结果页获取搜索参数,连接到数据库并执行数据库查询,创建记录集并显示其内容。在某些情况下,也可以将这搜索页和结果页合而为一。1.通过编程实现搜索/结果页2.通过服务器行为实现搜索/结果页6.2.6创建主/详细页主/详细页通过两个明细级别来显示从数据库中检索的信息。这个页面集由主页和详细所组成,主页列出通过查询返回的所有记录部分信息的列表,每条记录都包含一个超级链接,当单击主页上的超级链接时打开详细页并传递URL参数,在详细页中读取URL参数并根据此参数值执行数据库查询,以检索所选记录的更多详细信息并显示出来。1.通过编程实现主/详细页2.通过服务器行为实现主/详细页6.3.1SQLINSERT语句INSERT语句的基本语法如下:INSERTINTOtableName[(fieldList)]VALUES(valueList)其中tableName是用来接受数据的表的名称;fieldList给出若干个要插入数据的字段,该列表必须用圆括号起来,其中的各个字段用逗号分隔,如果省略fieldList,则使用目标表中的所有字段来接受数据;valueList给出待插入的数据,这个列表也必须用圆括号括起来,其中的各个值用逗号分隔。如果希望在一行记录的所有字段中添加数据,则可以省略INSERT语句中的(fieldList)部分。在这种情况下,只要在VALUES关键字后面列出要添加的数据值就行了,但必须使值的顺序与目标表中的字段顺序保持一致。6.3.2编程实现添加记录调用Class.forName方法加载JDBC数据库驱动程序。调用DriverManager.getConnection方法连接到指定数据库,并创建一个Connection连接对象。调用Connection对象的preparedStatement方法创建一个PreparedStatement对象,将参数化的SQL语句发送到数据库。调用PreparedStatement对象的setter方法(如setShort、setString等)设置参数值,以替换SQL语句中的“?”占位符。必须指定与输入参数的已定义SQL类型兼容的类型。调用PreparedStatement对象的executeUpdate方法执行SQL语句。6.3.3快速生成记录添加页在Dreamweaver8中,添加记录的页面由两个构造块组成:允许用户输入数据的表单和用于更新数据库的“插入记录”服务器行为。既可以使用“插入记录表单向导”通过单个操作添加这两个构造块,也可以使用表单工具和“服务器行为”面板分别添加它们。1.使用向导生成记录添加页面2.逐块生成记录添加页面6.4.1sqlupdate语句在sql语言中,更新记录的操作是通过update语句来实现的。update语句用于对目标表中的一行、多行或所有记录进行修改。update语句的基本语法如下:updatetablenamesetfieldname1=value1,fieldname2=value2…fieldnamen=valuen[wheresearchcondition]其中tablename给出要更新数据的表的名称;set子句指定要修改的字段和所使用的数据,fieldname1、fieldname2…fieldnamen指定包含待修改数据的字段;value1、value2…valuen给出各个字段的新值。where子句用于指定要修改目标表中的哪些记录。如果省略where子句,则目标表中的所有记录都将被修改成由set子句指定的数据。6.4.2编程实现记录更新调用Class.forName方法加载JDBC数据库驱动程序。调用DriverManager.getConnection方法连接到指定数据库,并创建一个Connection连接对象。调用Connection对象的preparedStatement方法创建一个PreparedStatement对象,将参数化的UPDATE语句发送到数据库,该语句可以包含一个或多个“?”参数占位符。例如,为各个字段提供的值可以使用“?”参数来表示。通过request.getParameter方法获取表单参数,并调用PreparedStatement对象的setter方法(如setInt、setString等)来设置参数值,以替换SQL语句中的“?”占位符。必须指定与输入参数的已定义SQL类型兼容的类型。调用PreparedStatement对象的executeUpdate方法执行UPDATE语句,此时该方法将返回所影响的行数。如果发生数据库访问错误,则抛出SQLException异常。6.4.3快速生成记录更新页录1.搜索要更新的记录2.打开更新页面并传递记录标识3.检索要更新的记录4.使用向导生成更新页面更新页面具有3个构造块:一个用于从数据表中检索记录的记录集;一个允许用户修改记录数据的表单;一个用于更新记录数据的“更新记录”服务器行为。在Dreamweaver8中,可以使用更新记录表单向导来添加后面两个构造块。6.5.1SQLDELETE语句deletefromtablename[wheresearchcodition]其中,tablename指定要从其中删除记录的表的名称;where子句指定要从目标表中删除哪些记录,searchcodition指定记录的筛选条件,凡符合该条件的记录将被删除。如果省略where子句,则目标表中的所有记录被删除。6.5.2编程实现记录删除调用Class.forName方法加载JDBC数据库驱动程序。调用DriverManager.getConnection方法连接到指定数据库,并创建一个Connection连接对象。调用Connection对象的preparedStatement方法创建一个PreparedStatement对象,将参数化的DELETE语句发送到数据库,在WHERE子句可以包含一个或多个“?”参数占位符,以指定要删除哪些记录。通过request.getParameter方法获取表单参数,并调用PreparedSta

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论