《JSP与数据库》PPT课件.ppt_第1页
《JSP与数据库》PPT课件.ppt_第2页
《JSP与数据库》PPT课件.ppt_第3页
《JSP与数据库》PPT课件.ppt_第4页
《JSP与数据库》PPT课件.ppt_第5页
已阅读5页,还剩51页未读 继续免费阅读

下载本文档

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

文档简介

JSP与数据库 1 SQL语言简介 2 JDBC简介 3 使用JDBC连接数据库 4 访问数据库 5 数据库访问应用举例 1 SQL语言简介 在JSP中最常用到的SQL语句如下: (1)Select语句查询数据; (2)Insert语句添加记录; (3)Delete语句删除记录; (4)Update语句更新记录。 注意:SQL语句不区分大小写 1.1 Select语句 SQL语言的主要功能之一是实现数据库 查询,其Select语句可以从数据库中查询满足 特定条件的有关记录。Select语句的语法如下 : Select Top(数据)字段列表 From表 Where 条件Order By字段Group By字段 Top(数据) 字段列表 表 条件 Order By Group By 下列举一些常见的例子说明。 (1)选取全部数据 Select * From users (2)选取指定字段的数据 如果只想选取列表中某些字段的数据, 在Select后面指定字段名,可以指定多个列 ,但每个列之间必须用逗号隔开。 Select real_name, email From users (3)只选取前若干条记录 比如选取前3条记录: Select Top (3)* From users (4)用表中原有的字段产生派生字段 有时候为了需要,可以利用一列或若干列产 生一个新的字段。例如,从存放用户信息的 数据库表中,可以显示客户注册一年后的日 期: Select real _ name, (submit _ date+365) As new _ date From users (5)根据条件选取数据 比如选取2003年11月1日之前注册的用户: Select * From users Where submit _ date #2003-11-1# =等 于 不等于 大于 大于等于 小于 小于等于 Not非 And与 Or或 Between介于 Not Between不介于 In列的数据值位于所列的范围内 Not In列的数据值不位于所列的范围内 Is NULL列的数据值为 NULL Is Not NULL列的数据值不为NULL 表1条件连接符 (6)按关键字查找记录 有时候查找条件可能不太精确,比如 ,要查询所有姓名中有“勇”字的用户: Select * From users Where real _ name like “%勇%” (7)查询结果排序 表中数据时,特别是表中数据较多时,总 是希望表中的数据能够按照我们要求的顺序显 现出来,利用Order By就可以实现。例如,将 查询结果按姓名升序排列: Select * From users Order By real _ name ASC (8)查询满足条件的记录的总数 Select Count (*) As total From users Where submit _ date#2003-11-1# (9)组合查询 Select users.real_name, day_log.log_date, day_log.IP From users, day_log Where users.user_name=day_log.user_name 在选取各个表的字段时,要标明是哪个表 的字段。 用到的两个表之间用逗号隔开。 在两个表连接时,用到 users.user_name=pday_log.user_name条件, 表示根据两个表中的user_name字段将两个表 合成一个表。 这只是最简单的组合查询,还有左连接、 右连接等,请参考专门的SQL参考书籍。 (10)利用Group By分类合并 假如有一个学生成绩表usergrade,字段 有user_name(学号)和grade(学分)和 class(班级),现在要求每个班级的总分和平 均分: Select Sum(grade) As total_grade, Average (grade) As average_grade From usergrade Group By class 1.2 Insert语句 Insert Into表(字段1,字段2,)Values(字段1的 值,字段2的值,) 下面举一些常见的例子说明。 (1)只插入user_name字段 Insert Into users (user_name) Values (“liya“) (2)只插入user_name和real_name字段 Insert Into users (user_name , real_name) Values (“zhangsan”, “张三“) (3)只插入user_name和submit_date字段 Insert Into users (user_name, submit_date) Values (“luofang“,#2003-12-5#) (4)只插入user_name和age字段 Insert Into users (user_name, age) Values (“zhangpen“,23) (5)在users表中增加一条完整的记录 Insert Into users (user_name, password, real_name, tel, email, submit_date) Values (“mengmeng“, “123456“, “萌萌“, ““, #2003-11-2#) 下面举几条经常出错的Insert语句。 (1)user_name 是主键,但没有赋值 Insert Into users (real_name) Values (“涂涂“) (2)real_name 字段不允许空字符串,却赋了 空字符串(两个双引号表示空字符串) Insert Into users (user_name, real_name) Values (“tutu“ “) (3)字符串字段两边没有加双引号 Insert Into users (user_name, real_name) Values (“tutu“,涂涂) 1.3 Delete 在SQL语言中,可以使用Delete语句删除 表中无用的记录。其语法如下: Delete From表Where条件 下面举一些常用的例子。 (1)删除user_name为“tutu”的用户。 Delete From users where user_name=“tutu” (2)删除2003年1月1日前注册,且real_name 为“李亚”的用户。 Delete From users where real_name=“李亚” and submit_date: 其中 n是子协议的名称,如odbc,这个 名字说明数据源是个odbc类型的数据源。 n是用来标识数据源的。根据子协议 的不同,subname可以差别很大,但不管使用什 么,subname都必须给出足够详细的信息以便连 接到数据库。JDBC URL的subname部分的标准 格式如下: /hostname:port/subname 3.3 使用JDBC-ODBC桥连接数据库 1使用JDBC-ODBC桥建立“数据源名称” 的步骤 (1)打开Windows的控制面板,选择“ODBC” 设置程序 (2)打开该程序后,选择“系统DSN”选项卡建立系 统的ODBC数据源 (3)单击“添加”按钮添加新的系统DSN (4)在对话框中选择适当的ODBC驱动程序,此处 选择Microsoft Access Driver(*.MDB),然后按“完成” 按钮 (5)设置“数据源名”,并按“选择”按钮选择特定的数 据库。 (6)单击“确定”按钮完成ODBC DSN的建立。 2编写JDBC-ODBC桥连接数据 库的代码 Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver“) ; String url=“jdbc:odbc:zxy” Connection conn; conn=DriverManager.getConnection(url,”,”); 3.4 使用JDBC桥直接连接数据库 下面是用JDBC连接SQL Server7.0的程序代码 Class.forName(“com.microsoft.jdbc.sqlserver.SQLServerDriver“).newInstance( ); String url=“jdbc:microsoft:sqlserver:/localhost:1433;DatabaseName=zxy”; String user=“zxy”; String password=“666666”; Connection conn=DriverManager.getConnection(url,user,password); 3.5 关闭与数据库的连接 conn.close(); 4 访问数据库 java.sql包中与数据库操作有关的接口主要有以 下几个: (1)Connection (2)Statement (3)PreparedStatement (4)CallableStatement (5)ResultSet 4.1 使用SQL语句对数据库进行操 作 1查询操作 2获取结果集的字段 方 法说 明 getBlob(int),getBlob(String)将指定字段的值以Blob对象类型返回 getBoolean(int),getBoolean(String)将指定字段的值以Boolean类型返回 getByte(int),getByte(String)将指定字段的值以Byte类型返回 getBytes(int),getBytes(String)将指定字段的值以Byte类型返回 getDate(int),getDate(String)将指定字段的值以Date对象类型返回 getDouble(int),getDouble(String)将指定字段的值以Double类型返回 getFloat(int),getFloat(String)将指定字段的值以Float类型返回 getInt(int),getInt(String)将指定字段的值以Int类型返回 getLong(int),getLong(String)将指定字段的值以Long类型返回 getObject(int),getObject(String)将指定字段的值以Object类型返回 getShort(int),getShort(String)将指定字段的值以Short类型返回 getString(int),getString(String)将指定字段的值以String对象类型返回 表3 Result接口获取字段的get方法 3记录的插入、删除和更新操作 4使用带参数的SQL语句 (1)set方法组 (2)clearParameters()方法 (3)executeQuery()方法 (4)executeUpdate()方法 4.2 使用ResultSet对象对数据库 进行操作 1结果集的游标操作 (1)使用get或update方法组对当前记录 的字段进行操作。 (2)使用insertRow、deleteRow和 updateRow等方法对整条记录进行操作。 (3)以当前记录为起点进行游标的相对移 动操作。 方 法使 用 说 明 beforeFirst()移动到结果集的开始位置(第一条记录 前) first()移动到第一条记录 previous()上移一条记录 next()下移一条记录 last()移动到最后一条记录 afterLast()移动到结果集的结束位置(最后一条记录 后) absolute(int row)移动到row指定的记录 ,绝对 定位 relative(int row)从当前记录 开始,上移或下移row条记录 isBeforeFirst()判断是否是结果集的开始位置 isFirst()判断是否是结果集的第一条记录 isLast()判断是否是结果集的最后一条记录 IsAfterLast()判断是否是结果集的结束位置 表4ResultSet的游标操作 2结果集的类型 Statement createStatement(int resultSetType,int resultSetConcurrency) (1)resultSetType定义了结果集的类型 (2)resultSetConcurrency决定结果集的更 新方式 3使用结果集对表进行操作 (1)更新操作 update方法组 updateRow()方法 cancelRowUpdates()方法 (2)插入操作 使用moveToInsertRow()方法将游标移 动到插入行。 使用update方法组对插入行的字段进行 赋值。 使用insertRow()方法向数据库的表提交 插入操作。 (3)删除操作 9.4.3 数据库的高级操作 1批量操作 实现批量操作需要使用Statement对象的下面3个方法 。 (1)void addBatch(String sql),向Statement对象 添加SQL语句。 (2)int executeBatch(),向数据库提交Statement 对象中的SQL语句,SQL语句的执行情况以整型数组 返回,数组元素的顺序与SQL语句的顺序一致。 (3)

温馨提示

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

最新文档

评论

0/150

提交评论