第8章 JDBC与MySQL数据库
教学要求
(1) 熟练掌握:MySQL的下载安装和Navicat、MySQL-Front、phpMyAdmin图形管理工具的安装和使用。
(2) 了解:JDBC
(3) 熟练掌握JDBC访问数据库的三种方法:Statement(静态SQL语句)、PreparedStatement(含有参数动态SQL语句)、CallableStatement(调用存储过程)
延伸阅读
8.1 MySQL数据库
8.1.1 MySQL初步
- SQL
- SQL(Structured Query Language 结构化查询语言)的缩写,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。
- SQL标准
- SQL 是1986年10月由美国国家标准局(ANSI)通过的数据库语言美国标准,接着国际标准化组织(ISO)颁布了SQL正式国际标准。1989年4月,ISO提出了具有完整性特征的SQL89标准,1992年11月又公布了SQL92标准,在此标准中,把数据库分为三个级别:基本集、标准集和完全集。
- MySQL
- MySQL是一个开放源码的小型关联式数据库管理系统,开发者为瑞典MySQL AB公司。目前MySQL被广泛地应用在Internet上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。
- 其他SQL
- MS SQL Server、MS Access、IBM DB2、ORACLE、SYBASE、DBASE Ⅳ、SQLite等
SQL术语
- DQL
- DQL(Data Query Language)数据查询语言、数据检索语言,从表中获得数据。SELECT, WHERE, ORDER BY, GROUP BY和HAVING。
- DML
- 数据操作语言(DML:Data Manipulation Language):INSERT,UPDATE和DELETE。添加,修改和删除表中的行。
- DDL
- 数据定义语言(DDL:Data Definition Language):CREATE和DROP。
- DCL
- 数据控制语言(DCL:Data Control Language):GRANT、DENY或REVOKE。
- TPL
- 事务处理语言(TPL:Transaction Processing Language):BEGIN TRANSACTION,COMMIT和ROLLBACK。
- CCL
- 游标控制语言(CCL:Cursor Control Language):DECLARE CURSOR,FETCH INTO和UPDATE WHERE CURRENT用于对一个或多个表单独行的操作。
MySQL版本
- MySQL Community Server,这个不要钱!
- MySQL Enterprise 这个要掏钱,不过可以打电话咨询问题,也就是电话技术支持。
- MySQL Cluster,这个单独是没法用的,要在1或2的基础上用。当然用来平衡多台数据库的。
- MySQL Workbench,这是个好东西,用来设计数据库的。
MySQL版本发布
- 1996年,MySQL 1.0发布, 在小范围内使用。到了96年10月,MySQL 3.11.1发布了,没有2.x版本。此时的MySQL除了在表上Insert、Update、Delete和Select操作没有其他功能。
- 1999~2000年,MySQL AB公司在瑞典成立。2004年10月,发布了经典的4.1版本。
- 2005年10月,发布了MySQL 5.0。在5.0中加入了游标、存储过程、触发器、视图和事务的支持。
- 2008年1月16号 MySQL被Sun公司收购。2009年04月20日Oracle收购Sun 公司,MySQL 转入Oracle 门下。2010年04月22日发布MySQL5.5, MySQL cluster 7.1.
- 2015年10月20日Oracle在Twitter上发布了MySQL 5.7GA版本,2016年9月12日,MySQL8.0 DMR发布,废弃了MyISAM存储引擎。
8.1.2 MySQL下载、安装、配置
MySQL(5.7.23)的官网下载地址是http://dev.mysql.com/downloads/windows/installer/,单击[Looking for previous GA versions?]、下载网页底部的第2个下载按钮(5.7.23、371.0M)【Download】,
单击【No thanks, just start my download.】下载mysql-installer-community-5.7.23.0.msi)安装文件。5.7.23.0直接下载
【实训1】MySQL下载、安装、配置
(1) 双击下载文件[mysql-installer-community-5.7.23.0.msi], 勾选(同意)[I accept the licence terms] -> [Next] -> 安装类型选[Custorm],展开MySQL Servers -> MySQL Server -> MySQL Server 5.7 -> X64(添加), [Next] -> [Excute] -> [Next]勾选[tcp/ip]、[Open Firewall] -> [Next], 输入两次密码(记住你的root密码) -> [Next], 勾选[Configure MySQL Server as a Windows Service]和[Standard System Account], 去掉[Start the MySQL Server at System Startup] -> [Excute] -> [Finish]。
(2) 右键[我的电脑]、[属性]、[高级]、[系统环境变量],添加:MYSQL_HOME:C:\Program Files\MySQL\MySQL Server 5.7;修改:path 追加 %MYSQL_HOME%/bin;
(3) cmd界面启动MySQL:net start mysql57,停止MySQL:net stop mysql57。
8.1.3 Navicat、MySQL-Front下载、安装
【实训2】Navicat下载、安装、配置
【实训3】phpMyAdmin配置
【实训4】MySQL-Front下载、安装、配置
8.2 MySQL数据库技术
8.2.1 创建数据库
数据库就是存储数据的仓库。这里的数据库(DataBase DB)是指在计算机的存储介质上的仓库,数据必须是有组织、有结构的存储,不是杂乱无章的堆放。数据库包括数据表、视图、存储过程、索引等数据库对象。MySQL创建数据库的语句的语法格式是:
【例1.1】创建Demo数据库
8.2.2 创建数据表
数据表(Table)是数据库中最重要的数据库对象,是用于存储数据的数据库对象,数据库中的数据是以表为单位进行组织存储的。 数据表由行和列组成;表中的列称字段(Field),每个字段都有相应的描述信息,如数据类型、数据宽度等;表中的行称为记录(Record),它由若干个字段组成。MySQL创建数据表的语句的主要语法格式是:
【例1.2】创建数据表
8.2.3 插入数据
insert把新行插入到一个存在的表中,insert ... values形式的语句基于明确指定的值插入行,insert ... select形式插入从其他表选择的行。MySQL插入数据语句的主要语法格式是:
【例1.3】插入数据
8.2.4 查询数据
MySQL查询数据语句的主要语法格式是:
【例1.4】查询数据
8.2.5 修改数据
MySQL修改数据语句的主要语法格式是:
【例1.5】修改数据
8.2.6 删除数据
MySQL删除数据语句的主要语法格式是:
【例1.6】删除数据
8.2.7 创建视图
视图(view)是从使用者的角度查看数据的一个机制(可忽略不关注的内容、添加用户关注的内容),是从一个或几个基本表(或者视图)导出的表,实质就是1条select查询语句,表现的形式是一个二维表。
视图(view)是一个虚表。所谓的表是指其查询结果同真实的表一样,视图包含一系列带有名称的列和行数据。所谓的虚是指视图并不在数据库中以存储的数据值集形式存在,行和列数据来自其定义视图的查询所引用的表,并且在引用视图时动态生成。
【例1.7】创建包含学生班级名称的学生视图
8.2.8 创建存储过程
存储过程(Stored Procedure):一组预编译的SQL语句,可完成指定的操作。MySQL创建存储过程语句的主要语法格式是:
【例1.8】创建存储过程
8.2.9 删除存储过程、视图、表、数据库
MySQL删除数据库对象语句的主要语法格式是:
【例1.9】删除存储过程、视图、数据表、数据库
8.3 JDBC及其常用接口
8.3.1 JDBC概述
8.3.2 驱动程序接口Driver
8.3.3 驱动程序管理器DriverManager
8.3.4 数据库连接接口Connection
使用DriverManager类的静态方法getConnection()返回值为Connection类型,Connection对象表示的是Java应用程序与指定数据库之间的连接。
8.3.5 执行SQL语句接口Statement
Statement接口用于执行不带参数的简单SQL语句,该接口为Statement接口的子接口。
8.3.6 执行动态SQL语句接口PreparedStatement
PreparedStatement接口用于执行预编译的SQL语句,可以带输入参数,当然也可以不带输入参数,该接口为PreparedStatement的子接口。
8.3.7 执行存储过程接口CallableStatement
CallableStatement接口用于调用数据库的存储过程
8.3.8 访问结果集接口ResultSet
使用Statement/PreparedStatement对象执行SELECT类型的SQL语句后返回一个ResultSet类型的结果集,ResultSet结果集中包含了查询的结果。ResultSet结果集是一张二维表,其中有查询返回的列标题及对应的数据。
8.4 使用JDBC访问MySQL数据库之一
8.4.1 JDBC访问数据库的5个步骤
8.4.2 创建JDBC的通用数据库连接程序
【例2.1】在Java REsources的src下创建cn.dzj.ch08包,并在包下创建JDBC的通用数据库连接程序(src/cn/dzj/ch08/DBConnection_000.java)
8.4.3 创建Dao测试程序
【例2.2】在Java REsources的src下cn.dzj.ch08包下创建Dao测试程序(src/cn/dzj/ch08/DaoTest_000.java),右击该程序[运行方式]、[Java应用程序]在控制台察看运行结果。
8.5 使用JDBC访问MySQL数据库之二
8.5.1 执行SQL语句访问数据库
创建[显示学生信息]页面:WebContent\ch08\ShowStudentList_000.jsp
8.5.2 执行动态SQL语句访问数据库
创建[添加学生信息]服务器端处理页面(WebContent\ch08\StudentAdd_000.jsp)
创建[删除学生信息]后台处理页面 (WebContent\ch08\StudentDelete_000.jsp)
8.5.3 执行存储过程接口访问数据库
【例3.3】创建[显示、修改学生信息]页面 StudentUpdate_000.jsp
创建[修改学生信息]后台处理页面 (WebContent\ch08\StudentUpdate_000_.jsp)
8.6 使用JDBC高级部分
8.6.1 使用JDBC访问其他数据库
8.6.2 使用JDBC数据库连接池
8.7 习题
1.填空题(概念、知识点----------讲义中醒目的关键字)
(1)
(2)
(3)
(4)
(5)
2.编程题
仿照【例1】编写创建部门表(部门Id、部门名称)、员工表(工号,部门ID,姓名,性别,生日,工资,职务('经理','副经理','部门经理','部门副经理','主管','职员'),登记时间)、员工视图、Get员工信息By部门Id、Get员工信息By工号和添加数据的SQL脚本;仿照【例3】编写添加员工的html网页以及显示员工、修改员工(界面、后台处理)、添加和删除员工(后台处理)的jsp页面。
本章参考文献
返回目录