第14章 数据库编程.ppt
《第14章 数据库编程.ppt》由会员分享,可在线阅读,更多相关《第14章 数据库编程.ppt(79页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第十四章十四章 JDBC与数据库访问与数据库访问余法红余法红JAVA语言程序设计目录目录l14.1 数据库基础知识数据库基础知识l14.2 通过通过JDBC访问数据库访问数据库l14.3 JDBC编程实例编程实例l14.4 本章小结本章小结14.1 数据库基础知识数据库基础知识l数据管理的两个阶段数据管理的两个阶段文件管理l各种数据都是以文件为单位存储在外存,且由操作系统统一管理l文件相对独立,文件结构不能很好地反映现实世界中事物之间的联系,文件中存在大量的数据冗余数据库管理l以数据为中心组织数据,减少冗余,并提供更高的数据共享能力,由数据库系统进行管理l程序和数据具有较高的独立性,当数据的
2、逻辑结构改变时,不涉及数据的物理结构,也不影响应用程序,从而降低应用程序研制与维护的费用14.1.1 数据库技术的特点数据库技术的特点(续续)l应用程序访问数据库的基本模式应用程序访问数据库的基本模式DBMS(数据库管理系统)是数据库的核心软件。数据库系统的各种操作,包括创建数据库对象、检索和修改数据库中的数据,都是通过DBMS实现的数据库基础知识14.1.2 数据模型数据模型l数据模型数据模型数据库的逻辑结构所有的数据库系统都是基于某种数据模型的不同种类的数据库可能支持不同的数据模型关系数据库就是因为支持关系模型而得名数据库基础知识l关系模型关系模型形象地说就是二维表结构,也称之为关系表一个
3、关系数据库可以包含多个关系表,关系表是数据库中组织和存储数据的基本单位每个表都用于存储面向某个主题的信息。例如:l学生表存储学生信息l系表存储各系的信息l课程表存储课程信息等关系表每一行存储一个记录,每一列表示记录的一个属性。设计一个关系表时需要l为表命名l设计表的列结构,其中包括列名及列的数据类型14.1.2 数据模型数据模型数据库基础知识14.1.2 数据模型数据模型l学生表学生表由5列组成,每一列表示学生的一个属性每个学生都是用学号、姓名、性别、出生年月及所属系的系号等属性来描述,在这些属性上的一组合法取值就对应一个学生记录(表中的一行)数据库基础知识14.1.3 关系表中的主码与外来码
4、关系表中的主码与外来码l主码主码为了保证关系表中没有重复的记录,需要为关系表定义一个主码,作用是唯一标识表中的一个记录可以是表中的一列,也可以由几列组合而成在建表时如果定义了主码,系统可以对输入该表的数据进行检查,要求主码不能重、也不能空(NULL)例如在学生表中l学号可以作为主码,因为一个学号可以唯一地确定表中的一个学生记录l由于学生中有重名现象,姓名就不能用来做为主码数据库基础知识14.1.3 关系表中的主码与外来码关系表中的主码与外来码(续续)l外来码外来码现实世界中事物之间的联系反 映到数据库中就体现为表之间的联系,在关系数据库中,借助“外来码”实现存贮这种联系的信息如果一个表中的某一
5、列是另外一个表中的主码,那么该列称之为外来码。l例如在学生表中,“系号”就是外来码,因为系号是系表的主码,在学生表中设计了“系号”一列,就是为了存储学生和系之间的联系信息通过外来码和主码的等值连接将不同表里的相关记录连接在一起,从而实现数据库中相关数据的查找l可以查询每个学生所在系的信息,也可以查询指定系所包含的学生信息数据库基础知识NumberNameDepartmentSalaryLocation23603Jones4131100New Jersey24568Kerwin4132000New Jersey34589Larson6421800Los Angeles35761Myers6111
6、400Orlando47132Neumann4139000New Jersey78321Stephens6118500OrlandoRowColumnPrimary key14.1.3 关系表中的主码与外来码关系表中的主码与外来码(续续)数据库基础知识l该数据库中建有该数据库中建有员工基本信息表(person)l包括工作证号、姓名、部门编号、职务、工资、学历编号等字段l工作证号(ID)是该表的主码lDepartment列是一个外来码,匹配部门编码表中的DepID主码lEducation列也是一个外来码,匹配学历编码表中的EduID主码部门编码表(department)l保存了部门编号和部门名称
7、l部门编号(DepID)是主码学历编码表(education)l保存了学历编号和学历名称l学历编号(EduID)是主码14.1.3关系表中的主码与外来码关系表中的主码与外来码(续续)员工信息管理系统(员工信息管理系统(PIMS)的例子)的例子数据库基础知识14.1.3关系表中的主码与外来码关系表中的主码与外来码(续续)员工信息管理系统(员工信息管理系统(PIMS)的例子)的例子数据库基础知识14.1.4 建立一个实例数据库建立一个实例数据库l建立数据库需要借助于数据库管理系统,不同的数据库管理建立数据库需要借助于数据库管理系统,不同的数据库管理系统其具体操作方法是不同的,以系统其具体操作方法是
8、不同的,以Windows平台上的一个简平台上的一个简单的关系型数据库单的关系型数据库Access为例,建立一个数据库,为编写为例,建立一个数据库,为编写Java的数据库访问程序提供一个实例环境的数据库访问程序提供一个实例环境l1启动启动Office 的的Microsoft Access,选择,选择“新建一个新建一个Access数据库选项数据库选项”,在文件名输入栏中输入,在文件名输入栏中输入“PMS.mdb”。该文件代表一个该文件代表一个Access数据库数据库数据库基础知识14.1.4 建立一个实例数据库建立一个实例数据库lPMS数据库窗口出现在数据库窗口出现在Access主窗口中。在数据库
9、窗口的主窗口中。在数据库窗口的左侧,列出了常用的左侧,列出了常用的7类数据库对象。当选中某对象类后,类数据库对象。当选中某对象类后,就可以在右窗口中进行有关该对象的操作,如建立、修改,就可以在右窗口中进行有关该对象的操作,如建立、修改,运行等。运行等。7类对象的主要含义分别是:类对象的主要含义分别是:表 关系表,可以实现的操作包括表的建立、数据的维护、查询等查询 可以建立一个查询(视图的概念),还可以运行SQL语句窗体 数据库应用界面,可进行简单数据库应用开发报表 报表的制作与打印输出页 可生成基于web页面的数据库应用界面宏 可定义完成特定任务的操作或操作集模块 可定义数据库中使用的公共过程
10、与函数 数据库基础知识14.1.4 建立一个实例数据库建立一个实例数据库l2 在对象栏中选择在对象栏中选择“表表”,再选择,再选择“使用设计器创建表使用设计器创建表”方式,单击工具栏中的方式,单击工具栏中的“设计设计”按钮,就会出现表设计窗口。按钮,就会出现表设计窗口。在该窗口中可以定义字段的名称、数据类型、字段说明信息在该窗口中可以定义字段的名称、数据类型、字段说明信息等。分别设计等。分别设计Person表、表、Department表、表、Education表表数据库基础知识14.1.4 建立一个实例数据库建立一个实例数据库数据库基础知识14.1.4 建立一个实例数据库建立一个实例数据库l3
11、建立表之间的联系建立表之间的联系点击主窗口“工具”菜单中的“关系”选项,打开“关系”视图用鼠标拖动Education表的EduID属性,拉到Person表的Education属性上,在自动弹出的“编辑关系”对话框中,选择实施参照完整性,点击“创建”按钮用同样方法建立Department表中DepID列和Person表中Department列数据库基础知识14.1.4 建立一个实例数据库建立一个实例数据库4 为每个表创建数据为每个表创建数据 数据库基础知识14.1.5 SQL语言简介语言简介lSQL语言语言关系数据库的标准语言,从大型数据库(如Oracle)到微机数据库(如Access)都支持可
12、以实现对数据库的各种操作。例如l表及其他数据库对象的定义l数据的查询与数据维护l对数据库进行控制是非过程化的语言,只需要告诉数据库做什么,而不需要描述怎么做语句都是独立执行的,无上下文联系本身不区分大小写数据库基础知识14.1.5 SQL语言简介语言简介(续续)SQL关键字关键字数据库基础知识l在在SQL语言中,对数据库中数据的操作可分为读写语言中,对数据库中数据的操作可分为读写两种两种读操作(查询)通过SELECT语句实现,该语句的执行不会改变数据库中的数据l可以返回一行或多行数据l也可能没有返回结果(没有查到满足条件的记录)涉及到写操作的语句共有3个lINSERTlUPDATElDELET
13、E14.1.5 SQL语言简介语言简介(续续)SQL语言的读语言的读/写操作写操作数据库基础知识l建表语句建表语句定义表中各列的名称及数据类型有关列的数据类型可参考具体数据库的语法手册CREATE TABLE person(id INTEGER PRIMARY KEY,/定义该列为主码 name VARCHAR(10),/列定义,字符型 department INTEGER,/列定义,整型 occupation VARCHAR(10),salary NUMBER,education INTEGER);14.1.5 SQL语言简介语言简介(续续)建表语句建表语句数据库基础知识l插入语句插入语句向
14、指定表插入一条记录,插入的值要与表的定义匹配l插入一行数据NSERT INTO table_nameVALUES(value1,value2,.)l插入一行数据在指定的字段上INSERT INTO table_name(column1,column2,.)VALUES(value1,value2,.)例如在person表中插入一行INSERT INTO person VALUES(1,张三,1,manager,3500,5);14.1.5 SQL语言简介语言简介(续续)插入语句插入语句数据库基础知识l修改语句修改语句修改指定记录中某列的值,更新表中原有数据其格式为UPDATE table_na
15、me SET column_name=new_valueWHERE column_name=some_value例如:将person表中id号为1的人员的工资修改为3700元UPDATE person SET salary=3700 /指定对哪列进行修改、如何修改WHERE id=1;/选择要修改的行 14.1.5 SQL语言简介语言简介(续续)修改语句修改语句数据库基础知识l删除语句删除语句删除表中的指定的数据其格式为DELETE FROM table_name WHERE column_name=some_value例如删除部门号为4的员工记录DELETE FROM person WHER
16、E department=4;14.1.5 SQL语言简介语言简介(续续)删除语句删除语句数据库基础知识l查询语句查询语句从指定表中取出指定的数据SELECT select_list INTO new_table FROM table_source WHERE search_condition GROUP BY group_by_expression HAVING search_condition ORDER BY order_expression ASC|DESC 14.1.5 SQL语言简介语言简介(续续)查询语句查询语句数据库基础知识例:查询工资大于2000的员工的姓名及职务SELECT
17、 */“*”号表示输出全部列的值FROM person /指定查询的表,本查询只用到person表WHERE salary2000 ;/查询条件例:查询员工“张三”的学历,输出学历名SELECT education.nameFROM person,education /该查询用到两个表WHERE person.name=张三 AND person.education=education.eduid;14.1.5 SQL语言简介语言简介(续续)查询语句查询语句数据库基础知识14.2 通过通过JDBC访问数据库访问数据库lJDBC(Java DataBase Connectivity)是用于执行S
18、QL语句的Java应用程序接口,由一组用Java语言编写的类与接口组成,是一种底层API 使开发人员可以用纯Java语言编写完整的数据库应用程序用JDBC写的程序能够自动地将SQL语句传送给几乎任何一种数据库管理系统(DBMS)lJDBC(Java DataBase Connectivity)是一种规范,它让各数据库厂商为Java程序员提供标准的数据库访问类和接口,这样就使得独立于DBMS的Java应用开发工具和产品成为可能隔离了Java与不同数据库之间的对话,使得 程序员只须写一遍程序就可让它在任何数据库管理系统平台上运行使用已有的SQL标准,并支持其它数据库连接标准,如与ODBC之间的桥接
19、14.2 通过通过JDBC访问数据库访问数据库(续续)JDBC通过JDBC访问数据库lJava程序通过程序通过JDBC访问数据库的关系访问数据库的关系通过JDBC访问数据库14.2 通过通过JDBC访问数据库访问数据库(续续)lODBC(OpenDatabaseConnectivity)由微软公司提出,用于在数据库管理系统(DBMS)中存取数据是一套用C语言实现的访问数据库的API通过ODBC API,应用程序可以存取保存在多种不同数据库管理系统(DBMS)中的数据,而不论每个DBMS使用了何种数据存储格式和编程接口对于没有提供JDBC驱动的数据库,从Java程序调用本地的C程序访问数据库会带
20、来一系列安全性、完整性、健壮性等方面的问题,因而通过JDBC-ODBC桥来访问没有提供JDBC接口的数据库是一个常用的方案14.1.2 通过通过JDBC访问数据库访问数据库(续续)ODBC通过JDBC访问数据库lODBC的结构的结构应用程序(Application):本身不直接与数据库打交道,主要负责处理并调用ODBC函数,发送对数据库的SQL请求及取得结果驱动器管理器(ODBC manager):为应用程序装载数据库驱动器数据库驱动器(ODBC Drivers):实现ODBC的函数调用,提供对特定数据源的SQL请求。数据源(Data Sources,数据库):由用户想要存取的数据以及与它相关
21、的操作系统、DBMS和用于访问DBMS的网络平台组成。l访问数据库的模式访问数据库的模式你的程序 ODBC管理器 ODBC驱动程序 数据库14.1.2 通过通过JDBC访问数据库访问数据库(续续)ODBC的结构的结构通过JDBC访问数据库lODBC的不足的不足是一个C语言实现的API,并不适合在Java中直接使用。从Java程序调用本地的C程序会带来一系列类似安全性、完整性、健壮性的缺点完全精确地实现从C代码ODBC到Java API写的ODBC的翻译也并不令人满意。比如,Java没有指针,而ODBC中大量地使用了指针,包括极易出错的无类型指针“void”。ODBC并不容易学习,它将简单特性和
22、复杂特性混杂在一起,甚至对非常简单的查询都有复杂的选项。而JDBC刚好相反,它保持了简单事物的简单性,但又允许复杂的特性14.2 通过通过JDBC访问数据库访问数据库(续续)ODBC的不足的不足通过JDBC访问数据库lJDBC API是一组由Java语言编写的类和接口,包含在java.sql和javax.sql两个包中ljava.sql为核心包,这个包包含于J2SE中ljavax.sql包扩展了JDBC API的功能,成为了J2EE的一个基本组成部分可分为两个层次l面向底层的JDBC Driver API主要是针对数据库厂商开发数据库底层驱动程序使用l面向程序员的JDBC API14.2 通过
23、通过JDBC访问数据库访问数据库(续续)JDBC API通过JDBC访问数据库l应用程序通过应用程序通过JDBC API和底层的和底层的JDBC Driver API打交道打交道14.2 通过通过JDBC访问数据库访问数据库(续续)JDBC API的体系结构的体系结构通过JDBC访问数据库14.2 通过通过JDBC访问数据库访问数据库(续续)JDBC的的Driver类型类型lJDBC的的Driver可以分为可以分为4种类型种类型通过JDBC访问数据库l在这四种驱动器中,后两种在这四种驱动器中,后两种“纯纯Java”的驱动器效的驱动器效率更高,也更具有通用性,它们能够充分表现出率更高,也更具有通
24、用性,它们能够充分表现出Java技术的优势,例如可以在技术的优势,例如可以在applet中自动下载中自动下载需要的需要的JDBC驱动器驱动器l如果不能得到纯如果不能得到纯Java的驱动器,则可以使用前两的驱动器,则可以使用前两种驱动器作为中间解决方案,因为它们比较容易获种驱动器作为中间解决方案,因为它们比较容易获得,使用也较普遍。后面的例子就是用得,使用也较普遍。后面的例子就是用JDBC-ODBC Bridge驱动器完成的驱动器完成的14.2 通过通过JDBC访问数据库访问数据库(续续)JDBC的的Driver类型类型通过JDBC访问数据库l面向程序员的面向程序员的JDBC API可以完成以下
25、主要可以完成以下主要任务任务首先建立和数据源的连接然后向其传送查询和修改等SQL命令最后处理数据源返回的SQL执行的结果14.2 通过通过JDBC访问数据库访问数据库(续续)JDBC API的任务的任务通过JDBC访问数据库名称解释DriverManager处理驱动的调入并且对产生新的数据库连接提供支持DataSource在JDBC 2.0 API中被推荐使用代替DriverManager实现和数据库的连接Connection代表对特定数据库的连接Statement代表一个特定的容器,容纳并执行一条SQL语句ResultSet控制执行查询语句得到的结果集14.2 通过通过JDBC访问数据库访问
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第14章 数据库编程 14 数据库 编程
限制150内