Chapter13 Java数据库连接 授课教师:赵小敏 浙江工业大学 软件学院

Slides:



Advertisements
Similar presentations
JDBC 基础知识 第 七 章.  Java 的高级组件 回顾 1 本章相关词汇 单 词说 明 driver 驱动,驱动程序 connection 连接 manager 管理器 statement 语句 prepared 预备的,预编译的 result 结果 create 创建,创造 execute.
Advertisements

JSP 与数据库 SQL 语言简介 SQL 语言简介 JDBC 简介 JDBC 简介 使用 JDBC 连接数据库 使用 JDBC 连接数据库 访问数据库 数据库访问应用举例.
第十章 Java 数据库编程. 内容提要 数据库有关概念; 介绍 JDBC 的结构; 重点介绍 JDBC 访问几种数据库的基本过程;
项目八 用户注册系统 信息工程系 杜向然. 技能目标  掌握利用 JDBC 对数据库的访问、更新等操作,实现基本数 据库程序设计知识目标  了解 JDBC 的概念功能、意义及体系结构;  掌握使用 DriverManager 、 Connection 、 PreparedStatement 、
2011/11,12 南台資管 吳昭儀. 1. 使用者介面 (User Interface)  使用者操作畫面的安排  Textbox, ComboBox, ListBox, CheckList, … 2. 流程控制 (Process Control)  使用者輸入資料檢查  計算  資料輸出.
Java 技术与应用 数据库应用 ( 第 14 章 ) 西安交大 卫颜俊 2008 年 12 月 电子信箱: QQ: 网站 : /java.
第 7 章 数据库 1. Overview  数据库概述  数据库管理系统  数据库的体系结构和数据库模型  SQL 语言  数据库技术  构建数据库系统 2.
Chapter 3: SQL.
7.1 Java的数据库编程 Java中专门设置了一个java.sql包,定义了很多用来实现SQL功能的类,使用这些类,编程人员就可以很方便地开发数据库前端的应用。 因为SQL是一种直接对数据库进行操作的非过程扫描语言,不适合整个数据库应用程序的前端编程,所以需要其他语言来实现SQL语言的功能以完成对数据库的操作。
第六 章数据库访问页 6.1 数据访问页视图 6.2 创建数据访问页 6.3 编辑数据访问页 6.4 查看数据访问页 退出.
第14章 JDBC技术和数据库开发应用.
OceanBase 0.4:从API到SQL 日照
配合< JSP程序设计>例子源代码一起使用
项目6公司数据信息检索.
第12章 JDBC数据库应用程序设计.
資料庫 (Database) SQL Server 2008實作
第7章 数据库基础知识 SQL常用命令使用方法 (1) 数据记录筛选: sql="select * from 数据表
第十一讲 JDBC JDBC基础 JDBC驱动程序 JDBC编程 示例.
数据库概述 简而言之,数据库(DataBase)就是一个存储数据的仓库。为了方便数据的存储和管理,它将数据按照特定的规律存储在磁盘上。通过数据库管理系统,可以有效的组织和管理存储在数据库中的数据。如今,已经存在了Oracle、SQL Server、MySQL等诸多优秀的数据库。在这一章中将讲解的内容包括。
转正述职报告 乐恩公司 史航
Oracle数据库 Oracle 子程序.
第15章 Java数据库连接(JDBC) 15.1 创建数据源 15.2 JDBC-ODBC桥接器 15.3 顺序查询
在PHP和MYSQL中实现完美的中文显示
J2EE与中间件技术 ——Lab.
JAVA 程式設計與資料結構 第十一章 JDBC.
11-1 JDBC的基礎-說明 昇陽公司提出的資料庫中介軟體(Middleware)稱為「JDBC」(Java Database Connectivity),這是一種開放標準的Java程式介面,可以讓Java程式連接資料庫管理系統, 以Java技術來說,就是實作JDBC驅動程式介面(JDBC Driver.
JDBC 数据库系统与应用 2014年.
JAVA 编 程 技 术 主编 贾振华 2010年1月.
2018/11/15 面向对象与多线程综合实验-数据库操作 教师:段鹏飞.
数据库操作示例 import java.sql.*; //导入java.sql包 public class JDBCDemo {
胡鹏 王慧锋 TEL: 数据库系统原理课程设计 实验环节1 胡鹏 王慧锋 TEL:
崑山科技大學資訊管理系 伺服網頁程式設計 系統開發細部流程 教師:游峰碩.
電子商務網站建制技術與實習(II) 助教:江宜政 吳昇洋.
2018/11/23 面向对象与多线程综合实验-数据库操作 教师:段鹏飞.
班級:博、碩子一甲 授課老師:鐘國家 助教:陳國政
SQL Injection.
走进编程 程序的顺序结构(二).
辅导课程六.
PostgreSQL 8.3 安装要点 四川大学计算机学院 段 磊
第一单元 初识C程序与C程序开发平台搭建 ---观其大略
数据库基础 1.
第十章 IDL访问数据库 10.1 数据库与数据库访问 1、数据库 数据库中数据的组织由低到高分为四级:字段、记录、表、数据库四种。
以ISI平台为例,为您演示一下如何在Endnote文献中查看该文献的References
4、按钮事件.
第十三章 JDBC  JDBC简介  JDBC驱动类型  JDBC API  JDBC的发展.
第 7 章 JDBC数据库访问.
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
C语言程序设计 主讲教师:陆幼利.
CS, ZJU 4/18/2019 Chapter 7 数据库.
3.2 Mysql 命令行 1 查看数据库 SHOW DATABASES; 2 创建一个数据库test1 CREATE DATABASE test1; 3 选择你所创建的数据库 USE test1; (按回车键出现Database changed 时说明操作成功!) 4 查看现在的数据库中存在什么表.
SQL 范引娣.
商业分析平台-语义元数据 用友集团技术中心 边传猛 2013年 11月 06日.
VB与Access数据库的连接.
实验七 安全FTP服务器实验 2019/4/28.
Web安全基础教程
数据库系统与应用实验 基于SQL Server 2005.
第4章 Excel电子表格制作软件 4.4 函数(一).
iSIGHT 基本培训 使用 Excel的栅栏问题
多层循环 Private Sub Command1_Click() Dim i As Integer, j As Integer
Visual Basic程序设计 第13章 访问数据库
Delphi 7.0开发示例.
GIS基本功能 数据存储 与管理 数据采集 数据处理 与编辑 空间查询 空间查询 GIS能做什么? 与分析 叠加分析 缓冲区分析 网络分析
基于列存储的RDF数据管理 朱敏
VB与Access数据库的连接.
WEB程序设计技术 数据库操作.
使用ADO访问数据库 李宝智 BonizLee 课程 10564A
创建、启动和关闭Activity 本讲大纲: 1、创建Activity 2、配置Activity 3、启动和关闭Activity
学习目标 1、使用Mysql Workbench修改表
使用Fragment 本讲大纲: 1、创建Fragment 2、在Activity中添加Fragment
西南科技大学网络教育系列课程 动态网页设计(JSP) 第七章 JSP中数据库的使用.
Presentation transcript:

Chapter13 Java数据库连接 授课教师:赵小敏 浙江工业大学 软件学院 Email:zxm@zjut.edu.cn

学习目标 了解JDBC技术及Java.sql包的类和接口 理解使用Java.sql包的类进行基本的数据库查询

JDBC技术 JDBC本省是一个产品的商品名,它可被看做Java数据库连接的简称(Java DataBase Connectivity)。 JDBC是一组用java语言编写的类组成,它已成为一种供数据库开发者使用的标准API,用户可以用纯JAVA API来编写数据库应用。

JDBC的基本功能 建立与数据库的连接; 发送SQL语句; 处理数据库操作结果。

JDBC在数据库访问的两层与三层模型

JDBC接口概貌 JDBC接口分为两个层次:一个是面向程序开发人员的JDBC API,另一个是底层的JDBC Driver API

JDBC接口定义 JDBC API在java.sql包的主要类有: 1、DriverManager类:处理驱动程序的装入,为新的数据库连接提供支持,驱动程序要向该类注册后才能被使用,当进行连接时该类根据JDBC URL选择匹配的驱动程序; 2、java.sql.Driver类:驱动程序接口,负责确认URL与驱动程序的匹配,建立到数据库的连接等;

JDBC接口定义 3、java.sql.Connection类:表示到特定数据库的连接,其中的方法需要有相应的驱动程序实现; 4、java.sql.Statement类:为SQL语句提供一个容器,包括执行SQL语句、取得查询结果等方法;其中java.sql.Statement又有两个子类: Java.sql.PreparedStatement用于执行预编译的SQL语句; Java.sql.CallableStatement用于执行对一个数据库内嵌过程的调用

JDBC接口定义 5、java.sql.ResultSet类:提供对结果集进行处理的手段。 6、JDBC API其它的类和接口查看API

数据库连接 建立一个连接用户在访问数据库时要在JDBC管理层java.sql.DriverManager。getConnection方法产生一个java.sql.Connection对象。该方法使用一个URL串作为地址参数。 选择合适的驱动程序。在数据库URL中,可以指定驱动程序的名称,也可不指定。 数据库URL在连接时,由数据库URL指定要连接的数据库,此时可称为JDBC URL,其格式为: jdbc:<子协议>:<子名称> 子协议odbc表示对odbc数据源的访问,其格式为: jdbc:odbc<数据源名>[:<属性名>=<属性值>]

如何建立数据源? 开始->控制面板->管理工具-> ODBC数据源进入,选择“系统DSN”项,点击“添加…”

数据传递和结果接收 1、查询 执行一条查询语句后,返回的是由java.sql.ResultSet对象访问的行的集合。在该对象中提供了一系列get方法,访问当前的每一个数据项,ResultSet.next方法可实现在结果集的记录之间移动,可以使用数据项。 2、输入参数(IN) Java.sql.PrepareStatement接口提供了一系列setXXX方法向SQL语句传递输入参数,实现动态的SQL语句。在传递参数时,必须满足数据类型一致的要求。

数据传递和结果接收 3、输出参数(OUT) 在调用一个存储过程时,可用setXXX方法传递输入参数,使用输出参数接收返回结果。在使用时,必须先调用CallableStatement.registerOutParameter方法为每一个输出参数进行类型注册,然后执行该过程调用语句,最后使用getXXX方法取出输出参数的结果。

数据传递和结果接收 4、数据截断 如果使用Statement.setMaxFieldSize设置了列值的最大长度时,数据超过设置的最大长度将被截断。 5、SQL数据类型到Java类型的转换 SQL数据类型与Java类型的差异较大,JDBC提供了详细的SQL类型与Java类型转换的方法。常见JDBC类型与Java类型对照表见P365

JDBC应用 一、与数据库建立连接: 1、加载驱动程序 JDBC-ODBC桥接驱动程序,或由数据库厂商提供的驱动程序,或通过设置Java属性中的sql.driver来指定驱动程序。 加载驱动程序的两种基本方法: DriverManager类的静态方法registerDriver java.lang.Class类的forName方法

加载Oracle JDBC驱动程序 DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver()); 或 Class.forName(“oracle.jdbc.driver.OracleDriver”)

加载MS SQL Server JDBC驱动程序 DriverManager.registerDriver(new com.microsoft.jdbc.sqlserver.SQLServerDriver ()); 或 Class.forName(“com.microsoft.jdbc.sqlserver.SQLServerDriver”)

加载IBM DB2驱动程序 DriverManager.registerDriver(new com.ibm.db2.jdbc.app.DB2Driver ()); 或 Class.forName(“com.ibm.db2.jdbc.app.DB2Driver ”)

加载IBM Informix驱动程序 DriverManager.registerDriver(new com.informix.jdbc.IfxDriver ()); 或 Class.forName(“com.informix.jdbc.IfxDriver”)

加载Sybase驱动程序 DriverManager.registerDriver(new com.sybase.jdbc.SybDriver ()); 或 Class.forName(“com.sybase.jdbc.SybDriver”)

加载MySQL驱动程序 DriverManager.registerDriver(new org.gjt.mm.mysql.Driver()); 或 Class.forName(“org.gjt.mm.mysql.Driver”)

加载Access驱动程序 DriverManager.registerDriver(new sun.jdbc.odbc.JdbcOdbcDriver()); 或 Class.forName("sun.jdbc.odbc.JdbcOdbcDriver") ;

与数据库建立连接 2、建立连接 DriverManager类的getConnection方法用于建立与某个数据源的连接。若与由URL对象指定的数据源建立连接成功,则返回一个Connection类的对象

连接Oracle8/8i/9i数据库(用thin模式) Class.forName(“oracle.jdbc.driver.OracleDriver”);  String url="jdbc:oracle:thin:@localhost:1521:test";  //test为数据库的SID  String user=“admin";  String password=“admin1234";  Connection conn= DriverManager.getConnection(url,user,password);  Statement stmt=conn.createStatement();  String sql="select * from student";  ResultSet rs=stmt.executeQuery(sql); 

连接MS SQL Server7.0/2k数据库 Class.forName(“com.microsoft.jdbc.sqlserver.SQLServerDriver”).;  String url=“jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=test”;  //test为数据库名 String user="sa";  String password="";  Connection conn= DriverManager.getConnection(url,user,password);  Statement stmt=conn.createStatement();  String sql="select * from student";  ResultSet rs=stmt.executeQuery(sql); 

连接IBM DB2数据库 Class.forName("com.ibm.db2.jdbc.app.DB2Driver ");  String url="jdbc:db2://localhost:5000/test";  //test为数据库名  String user="admin";  String password="";  Connection conn= DriverManager.getConnection(url,user,password);  Statement stmt=conn.createStatement();  String sql="select * from student";  ResultSet rs=stmt.executeQuery(sql); 

连接MySQL数据库 Class.forName("org.gjt.mm.mysql.Driver");  String url ="jdbc:mysql://localhost/test?user=root&password=‘’&useUnicode=true&characterEncoding=bgk"  //test为数据库名  Connection conn= DriverManager.getConnection(url);  Statement stmt=conn.createStatement();  String sql="select * from student";  ResultSet rs=stmt.executeQuery(sql); 

连接Access数据库 Class.forName("sun.jdbc.odbc.JdbcOdbcDriver") ; String url="jdbc:odbc:Driver={MicroSoft Access Driver (*.mdb)};DBQ=test.mdb"; Connection conn = DriverManager.getConnection(url,"","");

与数据库建立连接 3、检查警告信息 若连接失败,则产生SQLException异常。成功时也可能产生一些警告信息 4、获得关于数据库的信息 用如下语句获取关于数据库表结构的信息: DatabaseMetaData dma=con.getMetaData();

与数据库建立连接 5、关闭连接 close()方法实现关闭连接 6、捕获异常 在建立连接和对数据库进行操作过程中,都可能产生异常 7、获取和设置连接选项 对一个连接可设置一些连接选项,如是否只读,是否自动提交,是否自动关闭等。如setReadOnly用户设置只读,而isReadOnly用于获得连接是否只读。

JDBC应用 二 、查询处理 JDBC中查询语句的执行方法可分为三类: Statement PreparedStatement CallableStatement

Statement类 (1)创建Statement对象 Statement对象主要用于语句的查询。建立一个Statement对象语句如下: Statement stmt=con.CreateStatement(); (2)执行查询语句 在Statement对象上,可使用executeQuery方法来执行一查询语句,如: ResultSet rs=stmt.executeQuery(“Select * from Authors”);

Statement类 (3)获取和设置选项 SetMaxRows:设置结果能容纳的最多行数 getMaxRows:返回目前结果集能容纳的最多行数 setQueryTimeOut:设置一个语句的执行等待时间 (4)关闭Statement 用语句stmt.close()关闭Statement

PreparedStatement类 Statement对象在每次执行SQL语句时都将该语句转给数据库,在多次执行同一语句时,效率较低。 使用PreparedStatement对象可以提高效率。若数据库支持预编译,它可以将SQL语句传给数据库做预编译,提高速度。 PreparedStatement对象的SQL语句还可以接收参数

PreparedStatement类 PreparedStatement类是Statement类派生的子类。 从一个Connection对象可以创建一个PreparedStatement对象。在创建时,应给出预编译的SQL语句,如: PreparedStatement stmt=con. PreparedStatement (“Select * from Authors”);

PreparedStatement类 (2)执行查询 使用execQuery方法来执行一查询语句,如: ResultSet rs=stmt. executeQuery(); (3)获取和设置选项 用父类Statement类的相应方法来获取和设置选项 (4) 关闭对象 用close()方法关闭

CallableStatement类 CallableStatement对象用于执行数据库中的存储过程。

JDBC应用 三、检索结果集 ResultSet对象包括一个由查询语句返回的一个表,这个表包含所有的查询结果。对ResultSet对象的处理必须逐条记录进行,而对每一记录中的各个数据项,可按任何顺序处理。

检索结果集的例子 假设表table由数据项a,类型为int;数据项b,类型为String,数据项c,类型为byte Statement stmt=con.createStatement(); ResultSet r=stmt.executeQuery(“select a,b,c from table”); while(r.next()){ int i=r.getInt(1); String s=r.getString(“b”); byte b[]=r.getBytes(3); System.out.println(i+s+b[0]); }

更新数据库操作 (1)对表中记录的操作 对一个表中的记录可以进行修改、插入和删除操作,分别对应SQL的update、Insert和Delete操作。 可用executeUpdate方法实现上述操作,它的参数是String对象,即要执行的SQL语句,返回的不是ResultSet对象,而是一个整数。对于不返回值的SQL语句, executeUpdate方法的返回值为0。

更新数据库操作 (2) 创建和删除表 创建表:Create table 表名 删除表:Drop table 表名 如创建数据库表Authors: stmt.executeUpdate(“create table Authors(AuthorID int, FirstName char(20), LastName char(20), YearBorn int”); 删除表Authors的语句: stmt.executeUpdate(“drop table Authors“);

增加和删除表结构中的数据项 对一个表的数据项进行修改操作使用SQL的Alter table语句。 如在表Authors中增加一数据项Address: stmt.executeUpdate(“alter table Authors add column Address varchar(50)”); 删除表中一列: stmt.executeUpdate(“alter table Authors drop column Address”);

用JDBC访问数据库示例 例1:用户登录:Access版、MySQL版

用JDBC访问数据库示例 例2:显示Books.mdb数据库中Authors的内容 该Access数据库中有四个表: - Authors - Publishers - AuthorISBN - Titles

表Authors

表Publishers

表AuthorISBN

表Titles

数据库Books.mdb各表之间的关系 主关键字唯一地标识了表中的记录,每个记录的主关键字字段都必须有一个唯一的值,这叫实体完整性规则。

用JDBC访问数据库示例 程序步骤: (1)加载驱动连接数据库或设置系统的ODBC数据源后建立数据库的连接 开始->设置->控制面板->ODBC数据源进入,选择“系统DSN”项,点击“添加…” (2) 发送访问、操作数据库的SQL语句 加载JDBC-ODBC桥驱动程序用class.forName方法来完成:Class.forName( "sun.jdbc.odbc.JdbcOdbcDriver" ); (3)处理对数据库访问的结果 源程序TableDisplay.java

性能优化 预编译语句 SQL语句批处理机制 stmt=c.createStatement(); sql="INSERT INTO film1 (filmdata) VALUES (?)"; stmt=c.prepareStatement(sql); for (int i=1;i<=20000;i++){ stmt.setString(1,""+i); stmt.executeUpdate(); } SQL语句批处理机制 stmt=c.createStatement(); sql="INSERT INTO film1 (filmdata) VALUES ('"+i+"')"; stmt.addBatch(sql); stmt.executeBatch();

作业 1、已知有一个Access数据库文件StuMngSys.xls,里面有一张学生表stu,stu的各字段含义如下表所示。 请编写一个Java程序将学生名字为“张三”的信息插入表中,信息如下表所示。

作业 2、编写一个从MS SQLServer数据库的学生表中查询20岁以下的学生信息的程序,其中数据库名为StuMngSys,学生表名为stu,stu的各字段含义如下表所示。