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

Slides:



Advertisements
Similar presentations
第二章 简单的 SQL 语句. 本章要点  创建一个简单的表  SQL 语句介绍  最简单的查询语句 select  带有限制条件的查询  查询结果的排序显示.
Advertisements

JSP 与数据库 SQL 语言简介 SQL 语言简介 JDBC 简介 JDBC 简介 使用 JDBC 连接数据库 使用 JDBC 连接数据库 访问数据库 数据库访问应用举例.
第十章 Java 数据库编程. 内容提要 数据库有关概念; 介绍 JDBC 的结构; 重点介绍 JDBC 访问几种数据库的基本过程;
2010 年 6 月课件制作人:王亚楠 1 模块 2 项目开发概论 教学课件 年 6 月课件制作人:王亚楠 2 目录 目标 了解:数据库技术的基本概念与结构 理解:数据模型的分类与结构组成 掌握:关系数据库及 SQL 的基本理论 知识 掌握:数据库设计的方法与步骤 内容 2.1 数据库技术基础.
项目八 用户注册系统 信息工程系 杜向然. 技能目标  掌握利用 JDBC 对数据库的访问、更新等操作,实现基本数 据库程序设计知识目标  了解 JDBC 的概念功能、意义及体系结构;  掌握使用 DriverManager 、 Connection 、 PreparedStatement 、
软件编程基础 一、程序的编辑 Java 源程序是以 Java 为后缀的简单的文本文件,可以用各种 Java 集成开发环境中的源代码编辑器来编写,也可以用其他文 本编辑工具,如 Windows 中的记事本或 DOS 中的 EDIT 软件等。 利用文字编辑器编写下列程序 public class Hello.
Java 技术与应用 数据库应用 ( 第 14 章 ) 西安交大 卫颜俊 2008 年 12 月 电子信箱: QQ: 网站 : /java.
第 7 章 数据库 1. Overview  数据库概述  数据库管理系统  数据库的体系结构和数据库模型  SQL 语言  数据库技术  构建数据库系统 2.
7.1 Java的数据库编程 Java中专门设置了一个java.sql包,定义了很多用来实现SQL功能的类,使用这些类,编程人员就可以很方便地开发数据库前端的应用。 因为SQL是一种直接对数据库进行操作的非过程扫描语言,不适合整个数据库应用程序的前端编程,所以需要其他语言来实现SQL语言的功能以完成对数据库的操作。
第6章 数据库管理软件Access 年秋.
第14章 JDBC技术和数据库开发应用.
十一 ASP对数据库的访问.
Java程序设计教程 第一讲 Java概述.
四資二甲 第三週作業 物件導向程式設計.
配合< JSP程序设计>例子源代码一起使用
第8章 设计数据库应用网站 本章讲述的主要内容 8.1 数据库基础知识 8.2 使用数据库系统 8.3 SQL查询基础
MVC Servlet与MVC设计模式.
项目6公司数据信息检索.
第12章 JDBC数据库应用程序设计.
資料庫 (Database) SQL Server 2008實作
第十一讲 JDBC JDBC基础 JDBC驱动程序 JDBC编程 示例.
数据库概述 简而言之,数据库(DataBase)就是一个存储数据的仓库。为了方便数据的存储和管理,它将数据按照特定的规律存储在磁盘上。通过数据库管理系统,可以有效的组织和管理存储在数据库中的数据。如今,已经存在了Oracle、SQL Server、MySQL等诸多优秀的数据库。在这一章中将讲解的内容包括。
第 八 章 資料庫安全 本投影片(下稱教用資源)僅授權給採用教用資源相關之旗標書籍為教科書之授課老師(下稱老師)專用,老師為教學使用之目的,得摘錄、編輯、重製教用資源(但使用量不得超過各該教用資源內容之80%)以製作為輔助教學之教學投影片,並於授課時搭配旗標書籍公開播放,但不得為網際網路公開傳輸之遠距教學、網路教學等之使用;除此之外,老師不得再授權予任何第三人使用,並不得將依此授權所製作之教學投影片之相關著作物移作他用。
文科计算机小公共课规划教材 Access 程序设计.
Chap 13 視界與資料庫程式設計.
Oracle数据库 Oracle 子程序.
第15章 Java数据库连接(JDBC) 15.1 创建数据源 15.2 JDBC-ODBC桥接器 15.3 顺序查询
J2EE与中间件技术 ——Lab.
外观模式.
JAVA 程式設計與資料結構 第十一章 JDBC.
11-1 JDBC的基礎-說明 昇陽公司提出的資料庫中介軟體(Middleware)稱為「JDBC」(Java Database Connectivity),這是一種開放標準的Java程式介面,可以讓Java程式連接資料庫管理系統, 以Java技術來說,就是實作JDBC驅動程式介面(JDBC Driver.
第六章 學習SQL語言.
JDBC 数据库系统与应用 2014年.
Chapter13 Java数据库连接 授课教师:赵小敏 浙江工业大学 软件学院
2018/11/15 面向对象与多线程综合实验-数据库操作 教师:段鹏飞.
数据库操作示例 import java.sql.*; //导入java.sql包 public class JDBCDemo {
JAVA vs. SQL Server 建國科技大學 資管系 饒瑞佶 2013/4 V1.
Chapter 12 T-SQL 語法與 ASP.NET.
Java基础 JavaSE异常.
胡鹏 王慧锋 TEL: 数据库系统原理课程设计 实验环节1 胡鹏 王慧锋 TEL:
崑山科技大學資訊管理系 伺服網頁程式設計 系統開發細部流程 教師:游峰碩.
電子商務網站建制技術與實習(II) 助教:江宜政 吳昇洋.
2018/11/23 面向对象与多线程综合实验-数据库操作 教师:段鹏飞.
第二讲 搭建Java Web开发环境 主讲人:孙娜
班級:博、碩子一甲 授課老師:鐘國家 助教:陳國政
大学计算机基础 典型案例之一 构建FPT服务器.
SQL Injection.
辅导课程六.
第一单元 初识C程序与C程序开发平台搭建 ---观其大略
第十章 IDL访问数据库 10.1 数据库与数据库访问 1、数据库 数据库中数据的组织由低到高分为四级:字段、记录、表、数据库四种。
1、能够使用java进行数据库连接和SQL查询操作
SQL Injection (資料隱碼) 學生:a 吳倩瑜 指導教授:梁明章.
4、按钮事件.
第十三章 JDBC  JDBC简介  JDBC驱动类型  JDBC API  JDBC的发展.
第 7 章 JDBC数据库访问.
SQL 范引娣.
第四章 团队音乐会序幕: 团队协作平台的快速创建
VB与Access数据库的连接.
第三章 SQL Server数据管理.
实验七 安全FTP服务器实验 2019/4/28.
计算机网络与网页制作 Chapter 07:Dreamweaver CS5入门
Web安全基础教程
数据库系统与应用实验 基于SQL Server 2005.
Visual Basic程序设计 第13章 访问数据库
VB与Access数据库的连接.
WEB程序设计技术 数据库操作.
使用ADO访问数据库 李宝智 BonizLee 课程 10564A
判斷(選擇性敘述) if if else else if 條件運算子.
西南科技大学网络教育系列课程 动态网页设计(JSP) 第七章 JSP中数据库的使用.
数据库应用技术 天津电大 翟迎建.
Presentation transcript:

JDBC 基础知识 第 七 章

 Java 的高级组件 回顾 1

本章相关词汇 单 词说 明 driver 驱动,驱动程序 connection 连接 manager 管理器 statement 语句 prepared 预备的,预编译的 result 结果 create 创建,创造 execute 执行 query 查询

本章目标  了解 JDBC 的概念和必要性  了解 JDBC 驱动程序类型  了解 java.sql 包  理解 JDBC 程序的结构  使用 JDBC 进行数据库编程  T-sql 语句的拼接  预编译

数据库访问技术简介  当今企业级应用程序大部分采用 了客户机 / 服务器( C/S ) Client/Server 模式;  客户端机器需要与服务器进行通 讯,要操作数据库中的数据,执 行 SQL ( Structured Query Language 结构化查询语言)语 句以及检索查询结果;  在 Java 中实现这些活动的技术称 作 JDBC 。

JDBC 连接数据库类型  使用 JDBC 连接数据库可以通过 不同的驱动方式来实现,有 4 种 驱动类型:  JDBC-ODBC 桥驱动  纯 Java 驱动  本地 API 部分 Java 驱动  JDBC 网络纯 Java 驱动  不论采用哪种驱动方式,在程序 中对数据库的操作方式基本相同, 只是加载不同的驱动程序即可。

JDBC  JDBC ( Java DataBase Connectivity )是由 Sun Microsystem 公司提供的 API ( Application Programming Interface 应用程序编程接口);  它为 Java 应用程序提供了一系列 的类,使其能够快速高效地访问 数据库;  这些功能是由一系列的类和对象 来完成的,我们只需使用相关的 对象,即可完成对数据库的操作。

ODBC  ODBC ( Open DataBase Connectivity )指开放式数据库 连接,是由 Microsoft 公司提供的 应用程序接口;  它负责连接各种不同产商和类型 的 DBMS ,然后为各种不同的编 程语言提供查询、插入、修改和 删除数据的功能;  如同在各种不同的 DBMS 和各种 不同的编程语言之间架设了一座 通用的桥梁。

JDBC 程序访问数据库步骤 开 始 导入 java.sql 包 加载并注册驱动程序 创建 Connection 对象 创建 Statement 对象 执行 SQL 语句 关闭 ResultSet 对象 关闭 Statement 对象 关闭 Connection 对象 使用 ResultSet 对象 建立数据源( ODBC ) 附加相应产商提供的驱动 结 束 JDBC-ODBC 桥方式纯 Java 驱动方式

步骤详解 1 :建立数据源  这里以 JDBC-ODBC 桥驱动方式为例,逐步 详细地讲解在 Java 程序中如何操作数据库, 而对于其它驱动方式,只需更换驱动程序即 可,其余不变;  首先建立 ODBC 数据源: 【开始】 → 【设置】 → 【控制面板】 → 【管 理工具】 → 【数据源( ODBC )】  新建数据源,名称可以任意,这里假设已经 建立了一个名为 myODBC 的数据源,连接到 SQL Server 2005 中的 pubs 数据库。

步骤详解 2 :加载驱动程序  使用 Class 类的 forName 方法,将驱动程序类 加载到 JVM ( Java 虚拟机)中;  对于使用 JDBC-ODBC 桥的驱动方式,应该 加载: sun.jdbc.odbc.JdbcOdbcDriver 类  如: Class.forName("sun.jdbc.odbc.J dbcOdbcDriver"); 方 法 原 型方 法 原 型说 明 static Class forName(String className) throws ClassNotFoundExcepti on 将由 className 指定 完整名称的类加载到 JVM 中,如果加载失 败,将抛出异常,必 须捕捉

步骤详解 3 :获得连接对象  成功加载驱动后,必须使用 DriverManager 类的静态方法 getConnection 来获得连接对象;  对于使用 JDBC-ODBC 桥的连接方式, 连接字符串的一般形式是: “jdbc:odbc: 数据源名称 ” ,如: Connection con = DriverManager.getConnection("jdb c:odbc:myODBC", "sa", ""); 方 法 原 型方 法 原 型说 明 static Connection getConnection (String url, String user, String password) throws SQLException 参数 url 是连接字符串,参数 user 是数据库用户名,参数 password 是登录口令,成功 连接到数据库返回 Connection 对象,连接失败则抛出 SQLException 异常,必须捕 捉

步骤详解释 4 :创建语句对象  一旦成功连接到数据库,获得 Connection 对 象后,必须通过 Connection 对象的 createStatement 方法来创建语句对象,才可 以执行 SQL 语句;  如: Statement sta = con.createStatement(); 方 法 原 型方 法 原 型说 明 Statement createStatement() throws SQLException 成功创建返回 Statement 对象,否 则抛出 SQLException 异常, 必须捕捉

步骤详解 5 :执行 SQL 语句  使用语句对象来执行 SQL 语句,有两种 情况:  一种是执行 DELETE 、 UPDATE 和 INSERT 之类的数据库操作语句 ( DML ),这样的语句没有数据结果返 回,使用 Statement 对象的 executeUpdate 方法执行;  如: sta.executeUpdate("INSERT INTO Friends VALUES(' 田七 ', ' 重庆 ', , ' ', 7500)"); 方 法 原 型方 法 原 型说 明 int executeUpdate(S tring sql) throws SQLException 参数 sql 是要执行的 SQL 语 句,执行成功返回受影响 的行数,执行失败则抛出 SQLException 异常,必须 捕捉

步骤详解 5 :执行 SQL 语句(续)  另一种是执行 SELECT 这样的数据查询 语句( DQL ),这样的语句将从数据库 中获得所需的数据,使用 Statement 对 象的 executeQuery 方法执行;  如: ResultSet rs = sta.executeQuery("SELECT * FROM Friend"); 方 法 原 型方 法 原 型说 明 ResultSet executeQuery(String sql) throws SQLException 参数 sql 是要执行的 SQL 语句,查询成功返 回包含有结果数据的 ResultSet 对象,否则 抛出 SQLException 异 常,必须捕捉

步骤详解 6 :关闭资源  当对数据库的操作结束后,应当将所有已经 被打开的资源关闭,否则将会造成资源泄漏;  Connection 对象、 Statement 对象和 ResultSet 对象都有执行关闭的 close 方法;  函数原型都是: void close() throws SQLException  如: rs.close(); // 关闭 ResultSet 对象 sta.close(); // 关闭 Statement 对象 con.close(); // 关闭 Connection 对象  有可能抛出 SQLException 异常,必须捕捉;  请注意关闭的顺序,最后打开的资源最先关 闭,最先打开的资源最后关闭。

数据库操作示例 import java.sql.*; // 导入 java.sql 包 public class JDBCDemo { public static void main(String[] args) { String strCon = "jdbc:odbc:myODBC"; // 连接字符串 String strUser = "sa"; // 数据库用户名 String strPwd = ""; // 口令 System.out.println(" 正在连接数据库..."); try { // 监控异常 Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); // 加载驱动程序 Connection con; // 获得连接对象 con = DriverManager.getConnection(strCon, strUser, strPwd); System.out.println(" 成功连接到数据库。 "); Statement sta = con.createStatement(); // 创建语句对象 // 执行 SQL 语句 String strSql = "DELETE FROM Friends WHERE [Name] = ' 郑六 '"; int count = sta.executeUpdate(strSql); System.out.println(" 成功删除 " + count + " 行数据。 "); sta.close(); con.close(); // 关闭所有已经打开的资源 } catch (ClassNotFoundException cnfe) { cnfe.printStackTrace(); } catch (SQLException sqle) { sqle.printStackTrace(); } } }

操作结果集  使用 Statement 对象的 executeQuery 方 法成功执行 SELECT 语句后,将返回一 个包含有结果数据的 ResultSet 对象,要 从该对象中获取数据,将使用到如下方 法: 方 法 原 型方 法 原 型说 明 boolean next() throws SQLException 将结果集游标往下移动一 行,如果已经到达结果集 最后,将会返回 false ,有 可能抛异常,必须捕捉 X getX(String columnName) throws SQLException 获得某个字段的值, X 是 指具体的数据类型,视数 据库表中字段的具体情况 而定,该方法有一组,并 且每个都有两种重载方法, 一种是以字段名称为参数, 另一种是以字段索引为参 数(字段索引从 1 开始), 有可能抛异常,必须捕捉 X getX(int columnIndex) throws SQLException

操作结果集示例 try { String strCon = "jdbc:odbc:MyODBC"; System.out.println(" 正在连接数据库..."); Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection con; con = DriverManager.getConnection(strCon, "sa", ""); System.out.println(" 成功连接到数据库。 "); Statement sta = con.createStatement(); ResultSet rs = sta.executeQuery("SELECT * FROM Friends"); System.out.println(" 查询到数据如下: "); while (rs.next()) { // 循环将结果集游标往下移动,到达末尾返回 false // 根据字段名称获得各个字段的值 System.out.print(rs.getString("Name") + "\t"); // 获得字符串 System.out.print(rs.getString("Address") + "\t"); // 获得字符串 System.out.print(rs.getInt("Telephone") + "\t"); // 获得整数 System.out.print(rs.getDate("HireDate") + "\t"); // 获得日期型数据 System.out.println(rs.getFloat("Salary")); // 获得浮点型数据 } rs.close(); sta.close(); con.close(); } catch (ClassNotFoundException cnfe) { cnfe.printStackTrace(); } catch (SQLException sqle) { sqle.printStackTrace(); }

纯 Java 驱动方式连接数据库  使用 JDBC-ODBC 桥方式连接数据库,其性 能完全取决于数据源( ODBC )的性能,并 且无法脱离 Microsoft 的平台,这样将带来不 便;  大部分 DBMS 产商都为自己的产品开发了纯 Java 的驱动程序,我们只需要加载相应的驱 动,就可以直接连接到数据库,而无需通过 ODBC 桥连接;  鉴于 DBMS 产品太多,这里只针对当今比较 流行的 SQL Server 2005 和 Oracle 9i 进行介绍。

下载驱动程序包  要使用纯 Java 驱动,首先必须获 得相应数据库的驱动程序包;  将驱动程序包复制到本地磁盘, 在命令提示行下,将完整路径设 置到 classpath 环境变量中。

纯 Java 驱动连接 SQL Server2005  使用纯 Java 驱动连接到 SQL Server 2005 数据库,加载驱动 程序应改成如下语句: Class.forName("com.microsoft. sqlserver.jdbc.SQLServerDrive r");  连接字符串应如下格式: "jdbc:sqlserver:// 服务器名或 IP:1433;databaseName= 数据库名 "  如: Connection con = DriverManager.getConnection(" jdbc:sqlserver:// :14 33; databaseName=pubs", "sa", "");

纯 Java 驱动连接 Oracle  使用纯 Java 驱动连接到 Oracle 9i 数据库,加 载驱动程序应改成如下语句: Class.forName("oracle.jdbc.drive r.OracleDriver");  连接字符串应如下格式: 服务名或 IP:1521: 数据库 名 "  如: Connection con = DriverManager.getConnection("jdb WER", "scott", "tiger");

T-sql 语句的拼接  在通常情况下,增加,删除,修改的内容以 及查询的条件都是由用户自己输入。  拼接的方式: 增加语句: “ insert into userinfo values('"+username+"','"+password+"') “ 修改语句: “ update userinfo set password = '"+password+"' where username ='"+username+"‘ "

T-sql 语句的拼接 删除语句: “ delete userinfo where username = '"+username+"‘ " 查询语句: String sql = "select * from userinfo where 1=1"; if(!username.equals("")){ sql+=" and username = '"+username+"' "; } if(!password.equals("")){ sql+=" and password = '"+password+"' "; }

预编译  数据查询的安全性  使用预编译如何提高查询的安全性  PrepareStatement 类  预编译的用法: String sql = "select * from students where id=? and name=?"; pst=conn.prepareStatement(sql); pst.setString(1, username); pst.setString(2, password); rs = pst.executeQuery();

总结  JDBC 是使用 Java 程序操作数据库的技 术;  使用 Class 类的 forName 方法可以将驱 动程序加载到 Java 解释器中;  使用 DriverManager 类的 getConnection 方法获得 Connection 对象,从而建立与 数据库的连接;  使用 Connection 对象的 createStatement 方法创建语句对象,以 便执行 SQL 语句;  使用 Statement 对象的 executeQuery 或 executeUpdate 方法执行 SQL 语句,并 使用 ResultSet 对象来操作结果数据;  PreparedStatement 接口允许创建预编 译的 SQL 语句,并使得在后续阶段可以 指定语句的参数。