版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
技能目标能书写正确的SQL语句,能利用JSP操作Access数据库,能利用JSP通过JDBC直连数据库。知识目标掌握基本的SQL语句用法;掌握配置数据源的用法;掌握驱动程序的加载、连接对象的创建、SQL语句对象的创建;能利用JSP对数据库进行查询、数据更新操作。依托任务任何一个购物网站,用户可根据自己的喜好查询某类商品、可对自己喜爱的商品下订单,这就要求购物网站具有利用动态网页开发技术完成对数据库数据进行查询、数据库更新等操作。任务一基本SQL语句SQL语言由3部分组成:(1)数据定义语言(DDL):用于执行数据库定义的任务,对数据库以及数据库中的各种对象进行创建、删除、修改等操作。数据库对象主要包括:表、缺省约束、规则、视图、触发器、存储过程。(2)数据操纵语言(DML):用于操纵数据库中各种对象,检索和修改数据。(3)数据控制语言(DCL):用于安全管理,确定哪些用户可以查看或修改数据库中的数据。1.数据库与数据表的创建(1)创建数据库CREATEDATABASE在SQL语言中,创建一个新数据库基本语法格式如下:CREATEDATABASE数据库名称例如:CREATEDATABASEXSDATA(2)创建表CREATETABLE在SQL语言中,创建一个新表基本语法格式如下:CREATETABLE<表名>(<字段1><数据类型1>[,<字段2><数据类型2>][,...])例如:CREATETABLEstudent(snochar(10),snamevarchar(8),ssexchar(2),sbirthdaydatetime,sdeptchar(16),addressvarchar(50))2.数据表数据维护(1)插入记录语法形式:INSERTINTO表名[(字段名表)]VALUES(值表)例如:INSERTINTOstudentVALUES('20020101','胡一兵','男','1980-12-30','CS')(2)数据记录的修改要修改表中已有数据的记录,可用UPDATE语句。语句格式:UPDATE<表名>SET<列名1>=<表达式1>[,<列名2>=<表达式2>][,…][WHERE<条件表达式>]例如:UPDATEstudentSETssex='女'WHEREsname='张丽'将张丽同学的性别改为女。(3)删除数据行DELETE用来从表中删除记录。语法格式:DELETEFROM表名[WHERE条件]例如:DELETEFROMstudentWHEREsno='20050301'删除学号为20050301的学生记录。3.数据查询语法形式:SELECT[DISTINCT][别名.]字段名或表达式[AS列标题]FROM表或视图别名[WHERE条件][GROUPBY分组表达式][ORDERBY排序表达式[ASC|DESC]]其中:①SELECT子句指出查询结果中显示的字段名或字段名和函数组成的表达式等,AS列标题指定查询结果显示的列标题。若要显示表中所有字段时,可用通配符“*”代替字段名列表。可用DISTINCT去除重复的记录行。②FROM子句指定表或视图。③WHERE子句定义了查询条件。④GROUPBY子句对查询结果分组。⑤ORDERBY子句对查询结果排序。任务二连接Access数据库1.创建ODBC数据源(1)创建一个Access型数据库(2)创建ODBC数据源要通过JDBC-ODBC桥访问数据库,就必须先为数据库建立一个ODBC数据源,这样数据库才能实现和应用程序的交互。2.建立JDBC-ODBC桥接器JDBC-ODBC桥接器就是把应用程序与数据源连接起来的驱动程序。因此,创建了数据源以后,还要加载JDBC-ODBC桥接器,即加载驱动程序。下面是加载驱动程序的方式:try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");}catch(ClassNotFoundExceptione){}通过Class类的静态方法forName(Stringdriver)加载JDBC-ODBC桥接器。3.建立数据库连接创建了数据源,加载了驱动程序,应用程序还是不能连接到数据库。应用程序要访问数据库,还必须创建一个到数据库的连接。即创建一个连接对象。下面是创建连接对象的静态方法:publicstaticConnectiongetConnection(Stringurl,Stringuser,Stringpassword)throwsSQLException假设数据源名是“xs_access”,用户登录系统的帐号是user/password。下面是获得连接对象的两种方法:①Connectionconn=DriverManager.getConnection(“jdbc:odbc:xs_access”,user,password);②Connectionconn=DriverManager.getConnection(“jdbc:odbc:xs_access”);getConnection()方法是DriverManager类的一个静态方法。对于Access数据库连接,一般采用第二种连接。对于SQLServer数据库采用第一种连接方法。4.进行数据库操作数据库操作分为数据查询与数据维护两种。(1)数据查询通过以下两个步骤,获得查询结果集。①创建语句对象Statementstmt=conn.createStatement(inttype,intconcurrency);在顺序数据查询、数据更新事务中,一般采用无参的createStatement()方法创建语句对象。如果事务是随机查询、游动查询和用结果集更新数据库,则应采用createStatement(inttype,intconcurrency)方法创建语句对象。下面是对该方法参数的说明。type的取值决定滚动方式,即结果集中的游标是否能上下滚动。取值如下:ResultSet.TYPE_FORWORD_ONLY
:结果集的游标只能向下滚动。ResultSet.TYPE_SCROLL_INSENSITIVE:结果集的游标可以上下移动,当数据库变化时,当前结果集不变。ResultSet.TYPE_SCROLL_SENSITIVE:返回可滚动的结果集。当数据库变化时,当前结果集同步改变。concurrency的取值决定是否能用结果集更新数据库。concurrency取值如下:ResultSet.CONCUR_READ_ONLY:不能用结果集更新数据库中的表。ResultSet.CONCUR_UPDATABLE:能用结果集更新数据库中的表。②获得查询结果集ResultSetrs=stmt.executeQuery(sql);//获得结果集rs在ResultSet对象中,读取当前记录各字段值的方法是getXXX()方法,常用的方法如下:publicStringgetString(StringcolumnName)throwsSQLException读取当前记录中指定字段名的值,这个值以字符串形式返回。publicStringgetString(intcolumnIndex)throwsSQLException读取当前记录中指定索引号字段的值,返回值是字符串。字段索引号从1开始编号,各字段的索引号以字段在select语句中的先后位置为准。在顺序查询中,只能使用next()方法,使游标移到下一行记录。类似于getString(),如果当前记录中的某个字段是整数,可以用getByte()、getShort()、getInt()、getLong()直接读取到整数值。如果当前记录某字段是浮点型的,可以用getFloat()、getDouble()读取。如果当前记录某字段是布尔型的,可以用getBoolean()读取。如果当前记录是日期型的,可以用getDate()、getTime()分别读取日期和时间。要对ReusltSet对象中的数据进行更新操作,可用如下的方法:publicvoiddeleteRow()throwsSQLException删除ResultSet对象中当前指针处的记录。publicvoidupdateRow()throwsSQLException把ResultSet对象中当前记录的值回写至数据库中。publicvoidupdateDouble(StringcolumnName,doublex)throwsSQLException把当前记录中指定字段名的double型值更新为一个新的值x。相类似的方法还有:updateShort()、updateInt()、updateLong()、updateByte()、updateDate()、updateTime()、updateFloat()、updateBoolean()、updateString()等。ResultSet中和记录指针移动相关的方法有:publicintgetRow()获得当前记录的记录号。publicbooleannext()将ResultSet对象中的记录指针移到下一条记录处,如果成功移动返回true,移动失败返回false。publicbooleanprevious()将游标向上移动,该方法返回boolean型数据,当移动到结果集第一行之前时返回false。publicvoidbeforeFirst()将游标移到结果集的初始位置,即在第一行之前。publicvoidafterLast()将游标移到结果集最后一行之后。publicvoidfirst()将游标移到结果集的第一行。publicvoidlast()将游标移到结果集的最后一行。publicbooleanisAfterLast()判断游标是否在最后一行之后。publicbooleanisBeforeFirst()判断游标是否在第一行之前。publicbooleanisFirst()判断游标是否指向结果集的第一行。publicbooleanisLast()判断游标是否指向结果集的最后一行。publicintgetRow()得到当前游标所指向的行号。行号从1开始,如果结果集没有行,返回0。publicbooleanabsolute(introw)将游标移到参数row指定的行号。说明:如果row取负值,就是倒数的行数。asolute(-1)表示移到最后一行,asolute(-2)表示移到倒数第二行。当移到第一行前面或最后一行的后面时,该方法返回false。(2)数据更新数据更新操作通过以下两个步骤实现:①创建语句对象Statementstmt=conn.createStatement(inttype,intconcurrency);②执行更新Stringsql="sqlStatement";sql代表插入、修改或删除操作的SQL字符串。intnumber=stmt.executeUpdate(sql);执行更新操作,executeUpdate()方法返回执行更新影响的数据行数。任务三连接SQLServer数据库下载免费的SQLServer2000DriverforJDBCServicePack4的安装文件。下载完毕后,双击安装文件并完成安装。安装完毕后需要将C:\ProgramFiles\MicrosoftSQLServer2000DriverforJDBC\lib目录下的msbase.jar,msutil.jar和mssqlserver.jar这3个文件复制到Tomcat下的\lib目录下。2.通过JDBC直连数据库①加载驱动程序在JDBC中,通常有两种加载驱动程序的方式。一种是将驱动程序加到java.lang.System的属性jdbc.drivers中。这是一个由DriverManager类加载的驱动程序类名的列表,用冒号分隔。另一种方式是在程序中利用Class.forName()方法加载指定的驱动程序,这样将显式地加载驱动程序。这种方式与外部设置无关,因此推荐使用这种加载驱动程序的方式。代码如下:Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");其中com.microsoft.jdbc.sqlserver.SQLServerDriver为SQLServer的JDBC驱动程序的别名。②创建指定数据库的URL要建立与数据库的连接,首先要创建指定数据库的URL。数据库URL对象与网络资源的统一资源定位类似,具体语法为如下:jdbc:subProtocol:subName://hostname:port;DatabaseName=dbname
③建立与数据库的连接连接通常是通过数据库的URL对象,利用DriverManager的getConnection()方法建立的。创建数据库连接时,需要提供数据库的URL和驱动类型,并且提供访问数据库的用户名和密码。格式为:Connectionconn=DriverManager.getConnection(url,user,password);任务四数据库维护1.数据库表的创建在数据库建立好后,下一步应建立数据表,以存放数据。数据表即可在企业管理器中直接建立,也可通过程序建立。2.数据库表记录的添加向数据表中加入数据有两种方式,一种是通过企业管理器直接加入,另一种是通过程序向表中加入数据行。下面我们通过编写程序向数据表中加入数据行。3.数据库表记录的更新为了实现数据库表记录更新功能,和添加记录一样,也利用SQLServerXSCJConnBean的executeUpdate()成员函数。4.数据库表记录的删除在数据库的维护过程中,经常要删除一些已经没有意义的记录。为了实现删除功能,和添加记录、更新记录一样,也利用SQLServerXSCJConnBean的executeUpdate()成员函数。知识拓展1.预编译SQL语句对于要多次执行的SQL语句,SQLServer2000支持将其写成预编译SQL语句形式,而后直接多次调用。预编译SQL语句分为准备和执行两个过程,准备语句过程是通知SQLServer2000服务器将预编译语句编译成执行计划,SQL语句只需编译一次,后续执行是直接调用编译得到的机器代码段,执行效率较高。在预编译语句中,不出现具体的数据值,具体数据值用“?”代替。在执行预编译语句前,要将具体数据值写入“?”处。在JDBC中,使用Connection类的prepareStatement()方法为一条预编译语句建立一个PreparedStatement预编译对象,此方法的传入参数为等待编译的SQL语句。SQL语句中可变动的数据值用“?”表示,一般用法形如:Connectioncon=…….;Stringsql=“insertintoxxxTablevalues(?,?)”;PreparedStatementst=con.prepareStatement(sql);PreparedStatement接口中常用的方法有:①publicvoidsetString(intn,Stringx)throwsSQLException将一个字符串类型的数据值x写入预编译SQL语句的第n个“?”号处,n为预编译语句中“?”号的序号,第一个“?”号的序号为1。例如:Connectioncon=…….;Stringsql=“select*fromxscjwherexh=?”;PreparedStatementst=con.prepareStatement(sql);st.setString(1,“201”);类似于setString()方法的用法还有setBoolean()、setByte()、setDate()、setInt()、setDouble()、setTime()等。②publicResultSetexecuteQuery()throwsSQLException执行预编译的select语句,返回一个ResultSet结果集。③publicintexecuteUpdate()throwsSQLException执行预编译的delete、update、insert等数据库更新命令,返回值是语句的影响行数。④publicbooleanexecute()throwsSQLExcep
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年应急交通运输指挥调度能力测试含答案
- Unit3FoodandCultureReadingandThinking课件高中英语人教版选择性-2
- 2026年交通安全文明出行练习题及参考答案
- 第一节观察周边环境中的生物课件人教版生物七年级上册()-1
- 2026年乡村医生面试核心知识突破练习题附解析
- 2026年二级建造师实务考试绿色施工管理规范练习题及参考答案
- 《2026春 南方新课堂 初中毕业生学业考试指导书 化学》课件 10-第十四讲 常见的碱 中和反应
- 绿色特色农产品包装与销售方案
- 驾校元旦安全培训内容课件
- 八年级语文诗词鉴赏练习册
- 烟花爆竹零售店安全生产责任制
- 2025江苏苏州市昆山钞票纸业有限公司招聘10人笔试历年参考题库附带答案详解
- 商业中庭防坠网施工方案
- 交付异常应急预案
- 砌体工程监理实施细则及操作规范
- GB/T 222-2025钢及合金成品化学成分允许偏差
- 方太企业培训课件
- 四川村级财务管理制度
- 房产抖音培训课件
- (正式版)DB15∕T 3463-2024 《双炉连续炼铜工艺技术规范》
- 律师团队合作规范及管理办法
评论
0/150
提交评论