JSP 与数据库 SQL 语言简介 SQL 语言简介 JDBC 简介 JDBC 简介 使用 JDBC 连接数据库 使用 JDBC 连接数据库 访问数据库 数据库访问应用举例.

Slides:



Advertisements
Similar presentations
模块五 动态网页技术 任务五 查询记录 任务一 表单设计制作 任务二 简单动态的 ASP 页面制作任务三 页面与数据库的集成任务四 添加记录 任务六 电商系统融入网站.
Advertisements

第五章 通用网关接口 CGI 简介 Htm l Html + CGI Html + asp 网页可以处理动态的信息.
第二章 简单的 SQL 语句. 本章要点  创建一个简单的表  SQL 语句介绍  最简单的查询语句 select  带有限制条件的查询  查询结果的排序显示.
第十章 Java 数据库编程. 内容提要 数据库有关概念; 介绍 JDBC 的结构; 重点介绍 JDBC 访问几种数据库的基本过程;
Data type P64 ‘’ 转义字符 P67 P68 EXE,选出某个教师的学生中最新的一 个,要姓名, ID (,LIMIT ) EXISTS,NOT EXISTS P409 Q,EXISTS 和 in 的区别( 1000 ,查询结果)
Java 技术与应用 数据库应用 ( 第 14 章 ) 西安交大 卫颜俊 2008 年 12 月 电子信箱: QQ: 网站 : /java.
第 7 章 数据库 1. Overview  数据库概述  数据库管理系统  数据库的体系结构和数据库模型  SQL 语言  数据库技术  构建数据库系统 2.
5.1 掌握Power Scrip语言 5.2 使用控件 实训五 控件应用
第6章 数据库管理软件Access 年秋.
第14章 JDBC技术和数据库开发应用.
十一 ASP对数据库的访问.
第2讲 Transact-SQL语言.
第5章 索引及视图操作 数据库原理应用与实践 SQL SERver2014(第2版) 主编 贾铁军 科学出版社 编著 陈国秦 万程 邢一鸣
数据库技术 实践.
高等院校计算机教材系列 数据库原理与应用(第2版) 任课教师:刘雅莉
OceanBase 0.4:从API到SQL 日照
配合< JSP程序设计>例子源代码一起使用
第8章 设计数据库应用网站 本章讲述的主要内容 8.1 数据库基础知识 8.2 使用数据库系统 8.3 SQL查询基础
第4章 关系数据库标准语言SQL 4.1 SQL语言概述 4.2 SQL数据查询功能 4.3 SQL数据操作功能 4.4 SQL数据定义功能.
MVC Servlet与MVC设计模式.
第12章 JDBC数据库应用程序设计.
第7章 数据库基础知识 SQL常用命令使用方法 (1) 数据记录筛选: sql="select * from 数据表
第十一讲 JDBC JDBC基础 JDBC驱动程序 JDBC编程 示例.
数据库概述 简而言之,数据库(DataBase)就是一个存储数据的仓库。为了方便数据的存储和管理,它将数据按照特定的规律存储在磁盘上。通过数据库管理系统,可以有效的组织和管理存储在数据库中的数据。如今,已经存在了Oracle、SQL Server、MySQL等诸多优秀的数据库。在这一章中将讲解的内容包括。
第 八 章 資料庫安全 本投影片(下稱教用資源)僅授權給採用教用資源相關之旗標書籍為教科書之授課老師(下稱老師)專用,老師為教學使用之目的,得摘錄、編輯、重製教用資源(但使用量不得超過各該教用資源內容之80%)以製作為輔助教學之教學投影片,並於授課時搭配旗標書籍公開播放,但不得為網際網路公開傳輸之遠距教學、網路教學等之使用;除此之外,老師不得再授權予任何第三人使用,並不得將依此授權所製作之教學投影片之相關著作物移作他用。
文科计算机小公共课规划教材 Access 程序设计.
Chap 13 視界與資料庫程式設計.
计算机应用基础 上海大学计算中心.
转正述职报告 乐恩公司 史航
第3章 数据查询与SQL命令.
数据库管理软件 Access 2003的使用 安丘市职业中专 雷云龙 1.
Google App Engine Google 應用服務引擎.
第15章 Java数据库连接(JDBC) 15.1 创建数据源 15.2 JDBC-ODBC桥接器 15.3 顺序查询
JAVA 程式設計與資料結構 第十一章 JDBC.
11-1 JDBC的基礎-說明 昇陽公司提出的資料庫中介軟體(Middleware)稱為「JDBC」(Java Database Connectivity),這是一種開放標準的Java程式介面,可以讓Java程式連接資料庫管理系統, 以Java技術來說,就是實作JDBC驅動程式介面(JDBC Driver.
Access 2007 進銷存管理系統實作 文魁資訊股份有限公司.
JDBC 数据库系统与应用 2014年.
数据库操作示例 import java.sql.*; //导入java.sql包 public class JDBCDemo {
課程名稱:資料庫系統 授課老師:李春雄 博士
Chapter 12 T-SQL 語法與 ASP.NET.
二.資料庫系統建立與管理 Access 資料庫:windows下的單機資料庫 Access 操作 Mysql資料庫介紹.
胡鹏 王慧锋 TEL: 数据库系统原理课程设计 实验环节1 胡鹏 王慧锋 TEL:
資料庫安全 (Database Security)
彰化縣政府補助辦理網頁設計資料庫應用班 ASP與資料庫介紹 建國技術學院資管系 饒瑞佶.
崑山科技大學資訊管理系 伺服網頁程式設計 系統開發細部流程 教師:游峰碩.
電子商務網站建制技術與實習(II) 助教:江宜政 吳昇洋.
2018/11/23 面向对象与多线程综合实验-数据库操作 教师:段鹏飞.
ASP.NET 網頁製作教本 – 從基本語法學起
班級:博、碩子一甲 授課老師:鐘國家 助教:陳國政
SQL Server 2000 数据库入门.
第3章 MySQL教學範本 主從式資料庫系統 - CH3.
5 数据库管理与保护 数据库运行的最小逻辑工作单位是事务,所有对数据库的操作,都以事务作为一个整体来执行或撤销。
SQL SERVER 一些经典语句 1.
医院职工公费医疗系统.
資料庫管理(Access 2003) 第五章 利用查詢來 統計與分析資料 許欽嘉 老師.
第十二章 SQL語言簡介 講授大綱: 新增資料庫 新增資料表 新增資料 修改資料 刪除資料 查詢資料 透視ASP.NET-第12章
SQL Injection (資料隱碼) 學生:a 吳倩瑜 指導教授:梁明章.
4、按钮事件.
第 7 章 JDBC数据库访问.
第11章 ListView延迟加载效果 授课老师:高成珍 QQ号: QQ群: 、
CS, ZJU 4/18/2019 Chapter 7 数据库.
Ch11 資料庫範例_與Swing結合 物件導向系統實務.
3. SQL语言的应用 3.1 SQL历史和优点 3.2 数据查询 3.3 数据操纵.
第14章 SQL数据查询与操纵 内容提要 本章知识点
SQL查询语句 蔡海洋.
第三章 SQL Server数据管理.
Review 1~3.
11 檢視表的建立 11-1 檢視表的基礎 11-2 建立檢視表 11-3 修改與刪除檢視表 11-4 編輯檢視表的內容.
第4章 数据查询.
数据库应用技术 天津电大 翟迎建.
Presentation transcript:

JSP 与数据库 SQL 语言简介 SQL 语言简介 JDBC 简介 JDBC 简介 使用 JDBC 连接数据库 使用 JDBC 连接数据库 访问数据库 数据库访问应用举例

SQL 语言简介 将系统讲述在 JSP 中最常用到的语句如下: ( 1 ) Select 语句 —— 查询数据; ( 2 ) Insert 语句 —— 添加记录; ( 3 ) Delete 语句 —— 删除记录; ( 4 ) Update 语句 —— 更新记录。 注意: SQL 语句不区分大小写

Select 语句 SQL 语言的主要功能之一是实现数据库 查询,其 Select 语句可以从数据库中查询满足 特定条件的有关记录。 Select 语句的语法如下: Select[Top( 数据 )] 字段列表 From 表 [Where 条件 ][Order By 字段 ][Group By 字段 ]

① Top (数据) ② 字段列表 ③ 表 ④ 条件 ⑤ Order By ⑥ Group By

下列举一些常见的例子说明。 ( 1 )选取全部数据 Select*From users Select*From users ( 2 )选取指定字段的数据 如果只想选取列表中某些字段的数据,在 Select 后面指定字段,可以指定多个列,但 每个列之间必须用逗号隔开。 Select real_name, From users Select real_name, From users

( 3 )只选取前若干条记录 比如选取前 3 条记录: Select Top (3)* From users Select Top (3)* From users ( 4 )用表中原有的字段产生派生字段 有时候为了需要,可以利用一列或若干列产 生一个新的字段。例如,在上面建立的用户 数据库中,可以显示客户注册一年后的日期: Select real _ name, (submit _ date+365) As new _ date From users Select real _ name, (submit _ date+365) As new _ date From users

( 5 )根据条件选取数据 比如选取 2003 年 11 月 1 日之前注册的用户: Select * From users Where submit _ date < # # Select * From users Where submit _ date < # #

= 等 于 <>不等于 >大于 >=大于等于 <小于 <=小于等于 Not 非 And 与 Or 或 Between 介于 Not Between 不介于 In 列的数据值位于所列的范围内 Not In 列的数据值不位于所列的范围内 Is NULL 列的数据值为 NULL Is Not NULL 列的数据值不为 NULL 表 9-1 条件连接符

( 6 )按关键字查找记录 有时候查找条件可能不太精确,比如, 要查询所有姓名中 “ 勇 ” 字的用户: Select * From users Where real _ name like “% 勇 %” Select * From users Where real _ name like “% 勇 %”

( 7 )查询结果排序 在查询表中数据时,特别是表中数据较多时, 总是希望表中的数据能够按照我们要求的顺序 显现出来,利用 Order By 就可以实现。例如, 将查询结果按姓名升序排列: Select * From users Order By real _ name ASC Select * From users Order By real _ name ASC

( 8 )查询满足条件的记录的总数 Select Count (*) As total From users Where submit _ date < # # Select Count (*) As total From users Where submit _ date < # # ( 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

Insert 语句 Insert Into 表 ( 字段 1 ,字段 2 , …)Values( 字段 1 的 值,字段 2 的值, …) Insert Into 表 ( 字段 1 ,字段 2 , …)Values( 字段 1 的 值,字段 2 的值, …)下面举一些常见的例子说明。 ( 1 ) 只插入 user_name 字段 Insert Into users (user_name) Values ("liya") Insert Into users (user_name) Values ("liya") ( 2 ) 只插入 user_name 和 real_name 字段 Insert Into users (user_name, real_name) Values ("feiyun", " 费云 ") Insert Into users (user_name, real_name) Values ("feiyun", " 费云 ")

( 3 ) 只插入 user_name 和 submit_date 字段 Insert Into users (user_name, submit_date) Values ("luofang",# #) Insert Into users (user_name, submit_date) Values ("luofang",# #) ( 4 ) 假如在 users 表中增加一条完整的记录 Insert Into users (user_name, age) Values ("zhangpen",23) Insert Into users (user_name, age) Values ("zhangpen",23) ( 5 ) 在 users 表中增加一条完整的记录 Insert Into users (user_name, password, real_name, tel, , submit_date) Values ("mengment", "123456", " 萌萌 ", " ", # #) Insert Into users (user_name, password, real_name, tel, , submit_date) Values ("mengment", "123456", " 萌萌 ", " ", # #)

下面举几条经常出错的 Insert 语句。 ( 1 ) user_name 是主键,但没有赋值 Insert Into users (real_name) Values (" 涂涂 ") ( 2 ) real_name 字段不允许空字符串,却赋了 空字符串(两个双引号表示空字符串) Insert Into users (user_name, real_name) Values ("tutu" "") Insert Into users (user_name, real_name) Values ("tutu" "") ( 3 ) 字符串字段两边没有加双引号 Insert Into users (user_name, real_name) Values ("tutu" ,涂涂 ) Insert Into users (user_name, real_name) Values ("tutu" ,涂涂 )

Delete 在 SQL 语言中,可以使用 Delete 语句删除 表中无用的记录。其语法如下: Delete From 表 [Where 条件 ] 下面举一些常用的例子。 ( 1 ) 删除 user_name 为 “tutu” 的用户。 ( 2 ) 删除 2003 年 1 月 1 日前注册,且 real_name 为 “ 李亚 ” 的用户。 ( 3 ) 删除表中所有数据

Update 语句 Update 数据表名 Sel 字段 1= 字段值 1 ,字 段 2= 字段值 2 , …[Where 条件 ] Update 数据表名 Sel 字段 1= 字段值 1 ,字 段 2= 字段值 2 , …[Where 条件 ] ( 1 ) 修改 user_name 为 “jjshang” 的用户的电 话和 地址。 ( 2 ) 将所有 2003 年 1 月 1 日前注册的用户的注 册日期统一更改为 2003 年 1 月 1 日。 ( 3 ) 若有年龄字段 age ,将所有人的年龄增 加 10 岁。

JDBC 简介 JDBC ( Java DataBase Connectivity , 中文意为 Java 数据库连接)是在 Java 中用 面向对象的方法来连接数据库的技术。

1 . JDBC 的主要类包 ( 1 ) java.sql 包,提供在 Java 中访问和处 理存储于客户端数据源中数据的 API 。 ( 2 ) javax.sql 包,提供在 Java 中对服务器 端数据源进行访问和处理的 API 。

2 . JDBC 可访问的数据源 ( 1 ) 关系型数据库,如: Oracle , DB2 , SQL Server , My SQL , Access 等。 ( 2 ) 电子数据表格,如: Excel 等。 ( 3 ) 平面数据文件,如: DBase , Foxpro , Paradox 等。 3 . JDBC 的驱动程序

9.2.2 使用 JDBC 的访问数据库的方法 1 . JDBC 实现对数据库访问与操作的步骤 ( 1 )建立与数据源的连接。 ( 2 )发送查询、更新等 SQL 语句到数据源。 ( 3 )处理由 SQL 语句得到的结果。

JDBC 支持的数据访问模式 1 .两层模型 2 .三层模型

图 两层数据访问模型图

图 三层数据访问模型

使用 JDBC 连接数据库 JDBC 连接数据库的方法 1 . Java 程序连接数据库的 4 种方法 Java 程序连接数据库的方法实际上有 下面 4 种。

( 1 ) JDBC-ODBC 桥和 ODBC 驱动程序。 ( 2 ) 本机代码和 Java 驱动程序。 ( 3 ) JDBC 网络的纯 Java 驱动程序。 ( 4 ) 本机协议纯 Java 驱动程序。 2 .连接数据库 4 种方法的性质

建立数据库连接 1 .建立连接的基本步骤 ( 1 ) 加载要使用的数据库驱动程序类,该工 作由 Class 类的静态方法 forName 完成,它加载 相应的驱动程序类,并创建该类的一个实例。 如要加载 JDBC-ODBC 桥驱动类采用如下语句: Class.forName("sun.jdbc.odbc.JdbcOdbcDriv er"); Class.forName("sun.jdbc.odbc.JdbcOdbcDriv er");

( 2 ) 声明一个 Connection 接口的对象。如: Connection conn; Connection conn; ( 3 ) 并使用 driverManager 类的静态方法 getConnection 建立数据库连接,该方法主 要有两种重载形式: Connection getConnection(String url) Connection getConnection(String url) Connection getConnection(String url,String user,String password) Connection getConnection(String url,String user,String password)

2 . JDBC URL 字符串 ( 1 ) JDBC URL 字符串语法格式 ① jdbc ② ② ③ ③

使用 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 桥连接数据库的代码

使用 JDBC 桥直接连接数据库应用 关闭与数据库的连接

访问数据库 java.sql 包中与数据库操作有关的接口主要有以 下几个: ( 1 ) Connection ( 2 ) Statement ( 3 ) PreparedStatement ( 4 ) CallableStatement ( 5 ) ResultSet

使用 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 对象类型返回 表 Result 接口获取字段的 get 方法

3 .记录的插入、删除和更新操作 4 .使用带参数的 SQL 语句 ( 1 ) set 方法组 ( 2 ) clearParameters() 方法 ( 3 ) executeQuery() 方法 ( 4 ) executeUpdate() 方法

使用 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() 判断是否是结果集的结束位置 表 ResultSet 的游标操作

2 .结果集的类型 Statement createStatement(int resultSetType,int resultSetConcurrency) Statement createStatement(int resultSetType,int resultSetConcurrency) ( 1 ) resultSetType 定义了结果集的类型 ( 2 ) resultSetConcurrency 决定结果集的更 新方式

3 .使用结果集对表进行操作 ( 1 )更新操作 ① update 方法组 ② updateRow() 方法 ③ cancelRowUpdates() 方法

( 2 )插入操作 ① 使用 moveToInsertRow() 方法将游标移 动到插入行。 ② 使用 update 方法组对插入行的字段进行 赋值。 ③ 使用 insertRow() 方法向数据库的表提交 插入操作。 ( 3 )删除操作

数据库的高级操作 1 .批量操作 实现批量操作需要使用 Statement 对象的下面 3 个方法。 ( 1 ) void addBatch(String sql) ,向 Statement 对象 添加 SQL 语句。 ( 2 ) int[] executeBatch() ,向数据库提交 Statement 对象中的 SQL 语句, SQL 语句的执行情况以整型数组 返回,数组元素的顺序与 SQL 语句的顺序一致。 ( 3 ) void clearBatch() ,清空 Statement 对象的 SQL 语句列表。

2 .事务处理 ( 1 ) setAutoCommit(Boolean) ( 2 ) commit() ( 3 ) rollback()

3 .调用数据库的存储过程 JDBC 的 CallableStatement 对象提供了调 用关系数据库的存储过程的标准方法。 CallableStatement 对象使用 call 命令调用存储过 程, call 命令的语法形式如下,其中的问号代表 存储过程的参数。 {[? = ]call storedProcedure_name[(?, ?,...)]} {[? = ]call storedProcedure_name[(?, ?,...)]}

创建 CallableStatement 对象使用 Connection 对象的 prepareCall 方法。下面的语 句创建了一个 CallableStatement 对象。 CallableStatement cst; CallableStatement cst; cst = conn.prepareCall("{call getTestData(?, ?)}"); cst = conn.prepareCall("{call getTestData(?, ?)}");

存储过程的参数有 3 种:输入参数、输出 参数和输入输出参数。每种参数的作用不同, 使用的方法也有所不同。 ( 1 )输入参数,用于在调用存储过程时向 存储过程传入数据。 ( 2 )输出参数,用于返回存储过程执行后 的结果。 ( 3 )输入输出参数,同时具有输入参数和 输出参数的功能。