第十章 Java 数据库编程. 内容提要 数据库有关概念; 介绍 JDBC 的结构; 重点介绍 JDBC 访问几种数据库的基本过程;

Slides:



Advertisements
Similar presentations
第五章 通用网关接口 CGI 简介 Htm l Html + CGI Html + asp 网页可以处理动态的信息.
Advertisements

第二章 简单的 SQL 语句. 本章要点  创建一个简单的表  SQL 语句介绍  最简单的查询语句 select  带有限制条件的查询  查询结果的排序显示.
JSP 与数据库 SQL 语言简介 SQL 语言简介 JDBC 简介 JDBC 简介 使用 JDBC 连接数据库 使用 JDBC 连接数据库 访问数据库 数据库访问应用举例.
2010 年 6 月课件制作人:王亚楠 1 模块 2 项目开发概论 教学课件 年 6 月课件制作人:王亚楠 2 目录 目标 了解:数据库技术的基本概念与结构 理解:数据模型的分类与结构组成 掌握:关系数据库及 SQL 的基本理论 知识 掌握:数据库设计的方法与步骤 内容 2.1 数据库技术基础.
2011/11,12 南台資管 吳昭儀. 1. 使用者介面 (User Interface)  使用者操作畫面的安排  Textbox, ComboBox, ListBox, CheckList, … 2. 流程控制 (Process Control)  使用者輸入資料檢查  計算  資料輸出.
Java 技术与应用 数据库应用 ( 第 14 章 ) 西安交大 卫颜俊 2008 年 12 月 电子信箱: QQ: 网站 : /java.
第 7 章 数据库 1. Overview  数据库概述  数据库管理系统  数据库的体系结构和数据库模型  SQL 语言  数据库技术  构建数据库系统 2.
主讲:史治平 地址:四川电大计算机教研室 电话:
第6章 数据库管理软件Access 年秋.
数据库系统原理及应用 Database Theory and Application
第14章 JDBC技术和数据库开发应用.
十一 ASP对数据库的访问.
第2讲 Transact-SQL语言.
配合< JSP程序设计>例子源代码一起使用
第8章 设计数据库应用网站 本章讲述的主要内容 8.1 数据库基础知识 8.2 使用数据库系统 8.3 SQL查询基础
第12章 JDBC数据库应用程序设计.
資料庫 (Database) SQL Server 2008實作
第3章 SQL的基础知识 数据库管理及应用 3.1 SQL简介 3.2 SQL的数据模型 3.3 标识符 3.4 使用SQL语句管理数据库
第7章 数据库基础知识 SQL常用命令使用方法 (1) 数据记录筛选: sql="select * from 数据表
第十一讲 JDBC JDBC基础 JDBC驱动程序 JDBC编程 示例.
数据库概述 简而言之,数据库(DataBase)就是一个存储数据的仓库。为了方便数据的存储和管理,它将数据按照特定的规律存储在磁盘上。通过数据库管理系统,可以有效的组织和管理存储在数据库中的数据。如今,已经存在了Oracle、SQL Server、MySQL等诸多优秀的数据库。在这一章中将讲解的内容包括。
数据库原理及设计 --作业.
第 八 章 資料庫安全 本投影片(下稱教用資源)僅授權給採用教用資源相關之旗標書籍為教科書之授課老師(下稱老師)專用,老師為教學使用之目的,得摘錄、編輯、重製教用資源(但使用量不得超過各該教用資源內容之80%)以製作為輔助教學之教學投影片,並於授課時搭配旗標書籍公開播放,但不得為網際網路公開傳輸之遠距教學、網路教學等之使用;除此之外,老師不得再授權予任何第三人使用,並不得將依此授權所製作之教學投影片之相關著作物移作他用。
文科计算机小公共课规划教材 Access 程序设计.
电子商务师 第二部分 电子商务的技术基础—计算机.
第五章 信息系统开发能力培养.
第七章 数据库管理系统.
计算机应用基础 上海大学计算中心.
数据库应用与程序设计.
第15章 Java数据库连接(JDBC) 15.1 创建数据源 15.2 JDBC-ODBC桥接器 15.3 顺序查询
外观模式.
Introduction to database
JAVA 程式設計與資料結構 第十一章 JDBC.
11-1 JDBC的基礎-說明 昇陽公司提出的資料庫中介軟體(Middleware)稱為「JDBC」(Java Database Connectivity),這是一種開放標準的Java程式介面,可以讓Java程式連接資料庫管理系統, 以Java技術來說,就是實作JDBC驅動程式介面(JDBC Driver.
關聯式資料庫.
Access 2007 進銷存管理系統實作 文魁資訊股份有限公司.
第六章 學習SQL語言.
JDBC 数据库系统与应用 2014年.
数据库操作示例 import java.sql.*; //导入java.sql包 public class JDBCDemo {
課程名稱:資料庫系統 授課老師:李春雄 博士
二.資料庫系統建立與管理 Access 資料庫:windows下的單機資料庫 Access 操作 Mysql資料庫介紹.
Chap 10 SQL定義、操作與控制指令.
胡鹏 王慧锋 TEL: 数据库系统原理课程设计 实验环节1 胡鹏 王慧锋 TEL:
資料庫安全 (Database Security)
彰化縣政府補助辦理網頁設計資料庫應用班 ASP與資料庫介紹 建國技術學院資管系 饒瑞佶.
崑山科技大學資訊管理系 伺服網頁程式設計 系統開發細部流程 教師:游峰碩.
2018/11/23 面向对象与多线程综合实验-数据库操作 教师:段鹏飞.
班級:博、碩子一甲 授課老師:鐘國家 助教:陳國政
第6章 ADO.NET数据访问接口 6.
5 数据库管理与保护 数据库运行的最小逻辑工作单位是事务,所有对数据库的操作,都以事务作为一个整体来执行或撤销。
第五章 認識 SQL語言與 資料型別.
第十七章 資料庫SQL 17-1 SELECT 17-2 INSERT 17-3 UPDATE 17-4 DELETE.
資料庫管理(Access 2003) 第五章 利用查詢來 統計與分析資料 許欽嘉 老師.
第4章(1) 空间数据库 —数据库理论基础 北京建筑工程学院 王文宇.
4、按钮事件.
第十三讲 使用数据库(一) 上海财经大学信息管理与工程学院.
第 7 章 JDBC数据库访问.
第14章 外观模式 Deng Song
第11章 ListView延迟加载效果 授课老师:高成珍 QQ号: QQ群: 、
第18章 SQL結構化查詢語言 18-1 SQL語言的基礎 18-2 SQL的查詢指令 18-3 SQL子查詢與合併查詢.
第一章 数 据 库 概 述 第一节 引言 第二节 数据库基本概念 第三节 数据库系统结构 第四节 数据模型 第五节 数据库管理系统
CS, ZJU 4/18/2019 Chapter 7 数据库.
3.2 Mysql 命令行 1 查看数据库 SHOW DATABASES; 2 创建一个数据库test1 CREATE DATABASE test1; 3 选择你所创建的数据库 USE test1; (按回车键出现Database changed 时说明操作成功!) 4 查看现在的数据库中存在什么表.
3. SQL语言的应用 3.1 SQL历史和优点 3.2 数据查询 3.3 数据操纵.
SQL查询语句 蔡海洋.
第三章 SQL Server数据管理.
第十八章 資料庫與Access 課前指引 在日常生活中,無論各位到銀行開戶、醫院掛號或是到學校註冊,一定都會填寫所謂的個人資料,裡面通常包括姓名、性別、生日、電話、住址等項目,所以人們建立了各種不同的列表來儲存及組織這些資料。 人們當初試圖建造電腦的主要原因之一就是可用來儲存及管理一些數位化資料清單與資料,這也是資料庫觀念的由來。尤其在資訊科技發達的今日,日常的生活已經和資料庫產生密切的結合。例如目前最熱門的網路拍賣,如何讓千萬筆交易順利完成,或者透過手機記錄著他人電話號碼,並能分類與查詢電話。
第4章 数据查询.
西南科技大学网络教育系列课程 动态网页设计(JSP) 第七章 JSP中数据库的使用.
数据库应用技术 天津电大 翟迎建.
Presentation transcript:

第十章 Java 数据库编程

内容提要 数据库有关概念; 介绍 JDBC 的结构; 重点介绍 JDBC 访问几种数据库的基本过程;

数据库应用开发简介 作为有效的数据存储和组织管理工具, 数据库的应用日益广泛 目前主流的数据库产品有 Oracle 、 SQL Server 、 DB2 和 SyBase 等多种。 在数据库开发领域中,有三个方面需要 掌握: SQL 语言、 ODBC 数据访问接口和 JDBC 数据库访问接口。

SQL 语言 SQL ( Structured Query Language )是使用关系模型 的数据库语言,用于和各类数据库连接,提供通用的 数据管理和查询功能。 SQL 语言最初由 IBM 公司开发, 实现了关系数据库中的信息检索。后几经修改和完善, 被国际标准化组织确定为国际标准,目前执行的是 1992 年制定的 SQL-92 标准。 SQL 可以为各种支持 SQL-92 标准的数据库管理系统 ( DBMS )所接受和处理,通常各种 DBMS 都提供图形 用户界面,以使用户直接对数据库进行操作。但 SQL 语 言本身并不是完整的编程语言,还需要与其他高级编 程语言配合,才能实现应用程序对数据库的访问操作。

ODBC 数据访问接口 开放式数据库互连 ODBC ( Open DataBase Connectivity )是微软公 司开发的一套开发数据 库系统应用程序接口规 范,它支持应用程序以 标准的 ODBC 函数和 SQL 语句操作各种不同的数 据库。

ODBC 数据访问接口 四个组成部分: 应用程序 (Application) ODBC 管理器 (ODBC manager) ODBC 驱动程序 (ODBC Drivers) 数据源 (DataSources ,数据库 ) Application ODBC managerODBC Drivers DataSources

JDBC 数据访问接口 为支持 Java 程序的数据 库操作功能, Java 语言 采用了专门 Java 数据库 编程接口( JDBC , Java DataBase Connectivity ),用于在 Java 程序中实现数据库 操作功能并简化操作过 程。 JDBC 支持基本 SQL 语句,提供多样化的数 据库连接方式,为各种 不同的数据库提供统一 的操作界面

JDBC 数据访问接口 简单地分, JDBC 有两部分组成: JDBC API 和 JDBC Driver Interface. JDBC API 就是提供给 “ 客户 ” 的一组独立于数据库的 API ,对任何数据库的操作,都可以用这组 API 来进 行. JDBC Driver Interface 是面向 JDBC 驱动程序开发 商的编程接口, 把通用的 API 翻译成特定数据库能懂 的 “ 指令 ” ,它会把我们通过 JDBC API 发给数据库 的通用指令翻译给他们自己的数据库.

SQL 语言概述 SQL ( Structured Query Language )是关系型数据库 的标准语言,是由国际标准组织提出的,各种关系型 数据库都支持 SQL 指令, Oracle 在基本的 SQL 基础上进 行了扩充。 SQL 语句有如下的两大特点 ( 1 ) SQL 是一种类似于英语的语言,很容易理解和书写。 ( 2 ) SQL 语言是非过程化的语言(第四代语言)。 SQL 集 DDL ( Data Definition Language :数据定义语言), DML ( Data Manipulation Language :数据操作语言)和 DCL ( Data Control Language :数据控制语言)于一体。用 SQL 语言可以 实现数据库生命周期的全部活动。

基本 SQL 语句 基本的 SQL 语句包括 DQL 和 DML 。也就是 对数据库最常用的四大基本操作:查询 ( Select )、插入( Insert )、更新 ( Update )和删除( Delete )

DQL 的 3 种基本格式 1. 基本句型一:(最简单的 SELECT 语句) SELECT 字段名 FROM 数据表 例 1. SELECT * FROM grade 功能说明:将 grade 表中的所有字段取出来。 例 2. SELECT 学号, 姓名 FROM grade 功能说明:将 grade 表中学号和姓名字段取出来。 例 3. SELECT 学号, 姓名, 语文 + 数学 + 英语 as 总成绩 FROM grade 功能说明:将 grade 表中的学号和姓名取出来,并将语 文、数学和英语成绩相加产生虚拟列总成绩。

2. 基本句型二:使用条件查询 SELECT 字段名 FROM 数据表 WHERE 筛选条件 测试句型如下。 例 1. SELECT * FROM grade WHERE 数学 >60 功能说明:把所有数学成绩大于 60 分的记录选出来。 例 2. SELECT * FROM grade WHERE 数学 =300 or 语文 =300 功能说明:把数学成绩等于 300 分或者语文成绩等于 300 分的人选出来。 例 3. Like 子句基本格式一: “ _ ” 匹配。 功能说明:每个下划线匹配一个任意字符,注意只匹配一个字符。比如:姓名 like ‘ _ 敏 ’ ,匹配姓名以 “ 敏 ” 字结尾且字数等于二的所有数据记录,如: “ 张敏 ” 。 例 4. Like 子句基本格式二: “ % ” 匹配。 比如:姓名 Like '% 敏 %' ,匹配姓名中出现 “ 敏 ” 的所有数据记录,如: “ 周惠 敏 ” , “ 于敏 ” 、 “ 敏大 ” 、 “ 敏二 ” 等。比如要在数据库中查询姓江的人,只要利用 一条 SQL 语句就可以了, SELECT * FROM 数据库表 WHERE 姓名 Like ' 江 %' 。

3. 基本句型三:(进行排序) SELECT 字段名 FROM 数据表 ORDER BY 字段名 测试句型如下。 ( 1 ) SELECT * FROM grade ORDER BY 数学 注:从低到 高排序 功能说明:从 grade 表中取出所有字段,并按数学成绩排序。 ( 2 ) SELECT * FROM grade ORDER BY 数学, 语文 功能说明:从 grade 表中取出所有字段,并按数学成绩排序,如果数 学成绩相同则按照语文成绩排序。 ( 3 ) SELECT * FROM grade ORDER BY 数学 desc 注:从高到 低排序 功能说明:从 grade 表中取出所有字段,并按数学成绩倒序。 ( 4 ) SELECT top 5 * FROM grade 功能说明:从 grade 表中取出前五条记录的所有字段。

DML 的基本格式 ( 1 ) DELETE 指令:删除数据记录。 基本语法: DELETE FROM 数据表 WHERE 条件 例: DELETE from grade WHERE 数学 =0 功能说明:删除所有数学成绩为零的记录,如果没有 WHERE 子句,则删除所有记录。 ( 2 ) UPDATE 指令:更新数据记录。 基本语法: UPDATE 数据表 SET 字段值 = 新值 WHERE 条件 例 1 : UPDATE grade SET 数学 = 数学 +10 说明:将 grade 表 中所有人的成绩加 10 分 例 2 : UPDATE grade SET 数学 =100 WHERE 姓名 like '% 敏 %' 功能说明:将姓名中含有敏的人的数学成绩更新为 100 分

INSERT INTO 指令 ( 3 ) INSERT INTO 指令:添加数据记录。 基本格式 1 : INSERT INTO 数据表 VALUES (字段新值) 基本格式 2 : INSERT INTO 数据表(字段一,字段二, …… ) VALUES (字段新值) 其中关键字两种格式的区别是:当 values 含有数据库表所有字段 的值,并且顺序和数据库字段一致时,就可以省略数据库表后面 的字段名称。 例 1 : INSERT INTO grade( 学号, 姓名, 数学 ) VALUES (1234, ' 周 润发 ',70) 例 2 : INSERT INTO grade VALUES (5678, ' 周润发 ',70,80,90) 功能说明:该语句等价于: INSERT INTO grade( 学号, 姓名, 语文, 数学, 英语 ) VALUES (5678, ' 周润发 ',70,80,90)

连接数据库 一个普通数据库的连接过程为 : 1. 加载驱动程序. 2. 通过 DriverManager 到得一个与数据库 连接的句柄. 3. 通过连结句柄绑定要执行的语句. 4. 接收执行结果. 5. 可选的对结果的处理. 6. 必要的关闭和数据库的连接

1. 装载驱动程序,建立 ODBC - JDBC 桥 使用 JDBC 的第一步是安装驱动程序。大多数数据库都 有 JDBC 驱动程序,常用的 JDBC 驱动程序如图所示。 使用代码装载: Class.forName( “ 驱动 ” ); 是一种显式地加载. 当一个驱动 程序类被 Classloader 装载后, 在溶解的过程 中,DriverManager 会注册这个驱动类的实例. 这个调用是自动发生的, 也就是说 DriverManager.registerDriver() 方法被自动调用

2. 建立连接 建立与数据库之间的连接,也就是创建一个 Connection 的实例。 DriverManager 类的 getConnection() 方法将建立数据库的连接: getConnection() 方法有三个重载的方法, 一种是最简单的只给出 数据源即 : getConnection(url), 另一种是同时给出一些数据源信息即 getConnection(url,Properties), 另外一种就是给出数据源, 用户名和密 码 :getConnection(url,user,passwod), 对于数据源信息. 返回一个打开的连接,使用此连接创建 statement 对象并发送 SQL 语句到数据库。 在程序的最后,应该关闭 Connection 对象: public void close() throws SQLException

Statement 对象 Statement 对象用于将 SQL 语句发送到数据库中,使用 conn.createStatement() 创建。 createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UP DATABLE) :可以有两种结果返回, 如果执行的查询操作, 返回为结果集 ResultSet, 如 果执行更新操作, 则返回操作的记录数 int. 用缺省设置创建时, ResultSet 是一种只能访问一次( one-time-through )、只能向前 访问( forward-only )和只读的对象。您只能访问数据一次,如果再次需要该数据,必 须重新查询数据库。 通过设置 Statement 对象上的参数,可以控制它产生的 ResultSet 。例如: Class.forName(driverName); db = DriverManager.getConnection(connectURL); Statement statement = db.createStatemen(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UP DATABLE); 这个 Statement 现在将产生可以更新并将应用其他数据库用户所作更改的 ResultSet ,还可以在这个 ResultSet 中向前和向后移动。

Statement 对象 第一个参数指定 ResultSet 的类型。其选项有: TYPE_FORWARD_ONLY :缺省类型。只允许向前访问一次,并且不会受到其他用户 对该数据库所作更改的影响。 TYPE_SCROLL_INSENSITIVE :允许在列表中向前或向后移动,甚至可以进行特定定 位,例如移至列表中的第四个记录或者从当前位置向后移动两个记录。不会受到其他用 户对该数据库所作更改的影响。 TYPE_SCROLL_SENSITIVE :象 TYPE_SCROLL_INSENSITIVE 一样,允许在记录 中定位。这种类型受到其他用户所作更改的影响。如果用户在执行完查询之后删除一个 记录,那个记录将从 ResultSet 中消失。类似的,对数据值的更改也将反映在 ResultSet 中。 第二个参数设置 ResultSet 的并发性,确定是否可以更新 ResultSet 。其选项有: CONCUR_READ_ONLY :这是缺省值,指定不可以更新 ResultSet CONCUR_UPDATABLE :指定可以更新 ResultSet

Statement 接口 Statement 接口提供了执行 SQL 语句的常用方法: public ResultSet executeQuery(String sql) throws SQLException 用于产生单个 ResultSet 的语句,例如 SELECT 语句。 public int executeUpdate(String sql) throws SQLException 用于执行 INSERT 、 UPDATE 或 DELETE 语句以及 SQL DDL 语句,例如 CREATE TABLE 和 DROP TABLE 。该方 法返回一个整数,指示受影响的行数。  JDBC 在编译时并不对要执行的 SQL 语句检测, 只是把 它看着一个 String, 只有在驱动程序执行 SQL 语句时才 知道正确与否.

ResultSet 对象 ResultSet 包含符合 SQL 语句执行结果所有行,并且它通过一套 get 方法提供 了对这些行中数据的访问,常用的 get 方法有: int getInt(int columnIndex) ,取得当前行中第 columnIndex 列的整数的 值。 int getInt(String columnName) ,取得当前行中列名为 columnName 的整 数的值。 Date getDate(int columnIndex) ,取得当前行中第 columnIndex 列的日 期的值。 Date getDate(String columnName) ,取得当前行中列名为 columnName 的日期的值。 public String getString(int columnIndex) ,取得当前行中第 columnIndex 列的字符串的值。 public String getString(String columnName) ,取得当前行中列名为 columnName 的字符串的值。其他类型的 get 方法可以参考 java 文档。 ResultSet 维护指向其当前数据行的光标,让光标向下移动一行的方法是: public boolean next() throws SQLException

几种常用数据库的连接 连接 SQL Server2000 : Class.forName(“com.microsoft.jdbc.sqlserver.SQLServerDriver”).newInstance(); String url=“jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=TestDB”; String user=“sa”; String psw=“”; Connection conn=DriverManager.getConnection(url,user,psw); Statemnet stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet. CONCUR_UPDATABLE); String sql=“select * from TestTable”; ResultSet rs=stmt.executeQuery(sql); While(rs.next()){ } rs.close(); stmt.close(); conn.close();

几种常用数据库的连接 连接 Oracle : Class.forName(“oracle.jdbc.driver.OracleDriver”).newInstance(); String String user=“sa”; String psw=“”; Connection conn=DriverManager.getConnection(url,user,psw); Statemnet stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet. CONCUR_UPDATABLE); String sql=“select * from TestTable”; ResultSet rs=stmt.executeQuery(sql); While(rs.next()){ } rs.close(); stmt.close(); conn.close();

几种常用数据库的连接 连接 Sybase : Class.forName(“com.sybase.jdbc.SybDriver”).newInstance(); String url=“jdbc:sybase:Tds:localhost:5007/TestDB”; Properties SysProps=System.getProperties(); SysProps.put(“user”,”userid”); SysProps.put(“password”,”user_password”); Connection conn=DriverManager.getConnection(url,SysProps); Statemnet stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet. CONCUR_UPDATABLE); String sql=“select * from TestTable”; ResultSet rs=stmt.executeQuery(sql); While(rs.next()){ } rs.close(); stmt.close(); conn.close();

几种常用数据库的连接 连接 MySQL : Class.forName(“org.gjt.mm.mysql. Driver”).newInstance(); String url=“jdbc:mysql://localhost/TestDB?user=soft&password=soft&useUnicode= true&characterEncoding=8859_1”; Connection conn=DriverManager.getConnection(url,user,psw); Statemnet stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet. CONCUR_UPDATABLE); String sql=“select * from TestTable”; ResultSet rs=stmt.executeQuery(sql); While(rs.next()){ } rs.close(); stmt.close(); conn.close();

ODBC-JDBC 桥读取 Access 数据库 ( 1 )创建一个 Access 数据库; ( 2 )创建 ODBC 数据源; “ 控制面板 ” - “ ODBC 数据源 ” - “ ODBC 数据源管理器 ” - “ 系统 DSN ” - ” 添加 ” - “ 创建新数据源 ” -选择 “ Microsoft Access Driver(*.mdb) ” - ” 完 成 ” - “ ODBC Microsoft Access 安装 ” - “ 选取 ” - “ 选定数据库 ” - “ 目录 ” -选 取数据库文件-为数据源取名。 ( 3 )进行数据库连接。 A :装载驱动程序,建立 JDBC - ODBC 桥 Class.forName( “ sun.jdbc.odbc.JdbcOdbcDriver ” ); B :建立数据库连接 Connection con=DriverManager.getConnection( “ jdbc:odbc: 数据源 名 ” ); C :创建 Statement 对象 Statement stmt=con.createStatement(); D :创建查询 ResultSet rs=stmt.executeQuery( “ select * from mybook ” );

JDBC 数据访问格式 格式:执行基本 SQL 语句 数据访问基本格式: Class.forName("JDBC 驱动程序 "); Connection conn=DriverManager.getConnection(" 相应 JDBC 驱动程 序的连接串 ); Statement stmt=conn.createStatement(); ResultSet rs=stmt.executeQuery("DQL 语句 ");// 如果是数据查询 stmt.executeUpdate("DML 语句 ");// 如果是数据操作

小结 介绍 JDBC 的结构; 介绍如何利用 SQL 指令操作数据库以及常用的 SQL 函数的使用; 重点介绍 JDBC 访问数据库的基本过程;