第15章 Java数据库连接(JDBC) 15.1 创建数据源 15.2 JDBC-ODBC桥接器 15.3 顺序查询

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 访问几种数据库的基本过程;
Java 技术与应用 数据库应用 ( 第 14 章 ) 西安交大 卫颜俊 2008 年 12 月 电子信箱: QQ: 网站 : /java.
7.1 Java的数据库编程 Java中专门设置了一个java.sql包,定义了很多用来实现SQL功能的类,使用这些类,编程人员就可以很方便地开发数据库前端的应用。 因为SQL是一种直接对数据库进行操作的非过程扫描语言,不适合整个数据库应用程序的前端编程,所以需要其他语言来实现SQL语言的功能以完成对数据库的操作。
第六 章数据库访问页 6.1 数据访问页视图 6.2 创建数据访问页 6.3 编辑数据访问页 6.4 查看数据访问页 退出.
SQL的简单查询.
第七章 对数据库的操作 本章介绍页面与数据库之间的通讯.根据需要,将页面数据保存到数据库中,或者将数据库中的数据展现在页面上,或者执行数据事务处理:数据查询和数据更新。 学习目标 理解数据源 熟悉创建数据源的步骤 理解JDBC-ODBC桥接器 熟悉数据查询技术 熟悉数据更新技术.
第14章 JDBC技术和数据库开发应用.
配合< JSP程序设计>例子源代码一起使用
MVC Servlet与MVC设计模式.
项目6公司数据信息检索.
第12章 JDBC数据库应用程序设计.
(第11讲) Mysql 简介和创建新的数据库 本讲大纲: 1、MYSQL简介与概要 2、访问MYSQL的几种途径
第十一讲 JDBC JDBC基础 JDBC驱动程序 JDBC编程 示例.
数据库概述 简而言之,数据库(DataBase)就是一个存储数据的仓库。为了方便数据的存储和管理,它将数据按照特定的规律存储在磁盘上。通过数据库管理系统,可以有效的组织和管理存储在数据库中的数据。如今,已经存在了Oracle、SQL Server、MySQL等诸多优秀的数据库。在这一章中将讲解的内容包括。
插入超链接 高邮市第一实验小学 范太国 任务一:设置文本超链接 任务一:设置文字超链接 步骤:1、选定文字并右击,在快捷菜单 中选择“超链接”命令。 2、在弹出的对话框中选择左侧“链接到:”中的“本文档中的位置(A)”项,在“请选择文档中的位置(C):”中选择需要链接的幻灯片,单击“确定”按钮。
Oracle数据库 Oracle 子程序.
第15章 Java数据库连接(JDBC) 15.1 创建数据源 15.2 JDBC-ODBC桥接器 15.3 顺序查询
在PHP和MYSQL中实现完美的中文显示
第九章 字符串.
外观模式.
JAVA 程式設計與資料結構 第十一章 JDBC.
11-1 JDBC的基礎-說明 昇陽公司提出的資料庫中介軟體(Middleware)稱為「JDBC」(Java Database Connectivity),這是一種開放標準的Java程式介面,可以讓Java程式連接資料庫管理系統, 以Java技術來說,就是實作JDBC驅動程式介面(JDBC Driver.
JDBC 数据库系统与应用 2014年.
Chapter13 Java数据库连接 授课教师:赵小敏 浙江工业大学 软件学院
2018/11/15 面向对象与多线程综合实验-数据库操作 教师:段鹏飞.
数据库操作示例 import java.sql.*; //导入java.sql包 public class JDBCDemo {
Hadoop I/O By ShiChaojie.
胡鹏 王慧锋 TEL: 数据库系统原理课程设计 实验环节1 胡鹏 王慧锋 TEL:
崑山科技大學資訊管理系 伺服網頁程式設計 系統開發細部流程 教師:游峰碩.
電子商務網站建制技術與實習(II) 助教:江宜政 吳昇洋.
2018/11/23 面向对象与多线程综合实验-数据库操作 教师:段鹏飞.
班級:博、碩子一甲 授課老師:鐘國家 助教:陳國政
第八章 菜单设计 §8.1 Visual FoxPro 系统菜单 §8.2 为自己的程序添加菜单 §8.3 创建快捷菜单.
大学计算机基础 典型案例之一 构建FPT服务器.
SQL Injection.
辅导课程六.
SPARQL若干问题的解释 刘颖颖
PostgreSQL 8.3 安装要点 四川大学计算机学院 段 磊
第一单元 初识C程序与C程序开发平台搭建 ---观其大略
数据库基础 1.
第十章 IDL访问数据库 10.1 数据库与数据库访问 1、数据库 数据库中数据的组织由低到高分为四级:字段、记录、表、数据库四种。
第十三章 JDBC  JDBC简介  JDBC驱动类型  JDBC API  JDBC的发展.
第 7 章 JDBC数据库访问.
第14章 外观模式 Deng Song
SQL 范引娣.
VB与Access数据库的连接.
姚金宇 MIT SCHEME 使用说明 姚金宇
实验七 安全FTP服务器实验 2019/4/28.
Lightweight Data-flow Analysis for Execution-driven Constraint Solving
Web安全基础教程
数据库系统与应用实验 基于SQL Server 2005.
学习目标 1、limit的作用 2、实例操作.
3.16 枚举算法及其程序实现 ——数组的作用.
多层循环 Private Sub Command1_Click() Dim i As Integer, j As Integer
Visual Basic程序设计 第13章 访问数据库
学习目标 1、如何对结果进行分组 2、分组函数的一些实用方法.
Python 环境搭建 基于Anaconda和VSCode.
基于列存储的RDF数据管理 朱敏
Chinese Virtual Observatory
C++语言程序设计 C++语言程序设计 第九章 类的特殊成员 第十一组 C++语言程序设计.
VB与Access数据库的连接.
第8章 创建与使用图块 将一个或多个单一的实体对象整合为一个对象,这个对象就是图块。图块中的各实体可以具有各自的图层、线性、颜色等特征。在应用时,图块作为一个独立的、完整的对象进行操作,可以根据需要按一定比例和角度将图块插入到需要的位置。 2019/6/30.
WEB程序设计技术 数据库操作.
使用ADO访问数据库 李宝智 BonizLee 课程 10564A
创建、启动和关闭Activity 本讲大纲: 1、创建Activity 2、配置Activity 3、启动和关闭Activity
使用Fragment 本讲大纲: 1、创建Fragment 2、在Activity中添加Fragment
西南科技大学网络教育系列课程 动态网页设计(JSP) 第七章 JSP中数据库的使用.
JUDDI安装手册.
Presentation transcript:

第15章 Java数据库连接(JDBC) 15.1 创建数据源 15.2 JDBC-ODBC桥接器 15.3 顺序查询 15.1   创建数据源 15.2 JDBC-ODBC桥接器 15.3 顺序查询 15.4 可滚动结果集 15.5 排序查询 15.6 模糊查询 15.7 随机查询 15.8 更新、添加、删除记录 15.9 预处理语句 15.10 数据库访问中的套接字技术

JDBC JDBC(Java DataBase Connection)是Java数据库连接API。简单地说,JDBC能完成3件事: 与一个数据库建立连接。 向数据库发送SQL语句。 处理数据库返回的结果。

15.1 创建数据源 为了同数据库建立连接,首先要创建一个ODBC数据源。打开Windows中的控制面板,对于WindowXP,选择“性能和维护”→“管理工具”→“数据源(ODBC)” ;对于Window2000,选择“管理工具”→“数据源(ODBC)”;对于Window9X,选择 “数据源(ODBC)”。也可以使用“资源管理器”双击c:\windows\system32下的可执行文件“odbcad32”打开“数据源(ODBC)”。

建立数据源的步骤 打开“数据源(ODBC)”将出现ODBC数据源管理器对话框。 在ODBC数据源管理器对话框中选择“用户DSN”,然后单击“添加”按钮,将出现安装数据源的驱动程序对话框,可以在选择列表中选择相应的驱动程序。 在选择驱动程序对话框选择好驱动程序后,单击“完成”按钮,将出现创建数据源对话框。在该对话框中,你需要为创建的数据源起一个名称,并为你创建的数据源选择一个数据库。

15.2 JDBC-ODBC桥接器 为了要连接到这个数据库,我们首先要建立一个JDBC-ODBC桥接器: try{ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); } catch(ClassNotFoundException e){ }

try{ Statement sql=con.createStatement(); Catch(SQLException e){ } 连接到数据库 try{ Connection con=DriverManager.getConnection ("jdbc:odbc:数据源名字","login name"," password "); } catch(SQLException e){ } 发送SQL语句 try{ Statement sql=con.createStatement(); Catch(SQLException e){ }

ResultSet rs=sql.executeQuery(“SQL语句”); 处理查询结果 ResultSet rs=sql.executeQuery(“SQL语句”); 例如: ResultSet rs=sql.executeQuery(“SELECT * FROM CJ”); ResultSet对象是一个管式数据集,即它是以统一形式的列组织的数据行组成。 ResultSet对象一次只能看到一个数据行,使用next()方法走到下一数据行,获得一行数据后, ResultSet对象可以使用位置索引或使用列名称,以便使用getXxx()方法获得字段值。 ResultSet对象的方法见表15.1

15.3 顺序查询 使用结果集ResultSet的next()方法,可以顺序的查询。一个结果集将游标最初定位在第一行的前面,第一次调用next()方法使游标移动到第一行。next()方法返回一个boolean型数据,当游标移动到最后一行之后返回false。 例15.1 注意:当使用ResultSet的getXxx方法查看一行记录时,不可以颠倒字段的顺序。

15.4 可滚动结果集 为了得到一个可滚动的结果集,必须使用下述方法先获得一个Statement对象: Statement stmt=con.createStatement (int type ,int concurrency); 然后,根据参数的type、concurrency的取值情况,stmt返回相应类型的结果集: ResultSet re=stmt.executeQuery(SQL语句);

type的取值决定滚动方式,取值情况如下: ResultSet.TYPE_FORWORD_ONLY 结果集的游标只能向下滚动。 ResultSet.TYPE_SCROLL_INSENSITIVE 结果集的游标可以上下移动,当数据库变化时,当前结果集不变。 ResultSet.TYPE_SCROLL_SENSITIVE 返回可滚动的结果集,当数据库变化时,当前结果集同步改变。

Concurrency 取值决定是否可以用结果集更新数据库,Concurrency取值: ResultSet.CONCUR_READ_ONLY 不能用结果集更新数据库中的表。 ResultSet.CONCUR_UPDATETABLE 能用结果集更新数据库中的表。

滚动查询经常用到ResultSet的方法: public boolean previous() 将游标向上移动,该方法返回boolean型数据,当移到结果集第一行之前时返回false。 public void beforeFirst() 将游标移动到结果集的初始位置,即在第一行之前。 public void afterLast() 将游标移到结果集最后一行之后。 public void first() 将游标移到结果集的第一行。 public void last() 将游标移到结果集的最后一行。

滚动查询经常用到ResultSet的方法: public boolean isAfterLast() 判断游标是否在最后一行之后。 public boolean isBeforeFirst() 判断游标是否在第一行之前。 public boolean ifFirst() 判断游标是否指向结果集的第一行。 public boolean isLast() 判断游标是否指向结果集的最后一行。 public int getRow() 得到当前游标所指行的行号,行号从1开始,如果结果集没有行,返回0。 public boolean absolute(int row) 将游标移到参数row指定的行号。

15.5 排序查询 可以在SQL语句中使用ORDER BY子语句,对记录排序 。 例如,按总成绩排序查询的SQL语句: SELECT * FROM student ORDER BY 数学成绩+英语成绩+物理成绩

15.6 模糊查询 可以用SQL语句操作符LIKE进行模式般配,使用“%”代替0个或多个字符,用一个下划线“_”代替一个字符。比如,下述语句查询姓氏是“王”的记录: rs=sql.executeQuery ("SELECT * FROM students WHERE 姓名 LIKE '王%' ");

15.7 随机查询 用Math类的静态方法random()可以产生一个大于0小于1的随机数,再用下述公式: int i=(int)(Math.random()*number); 产生一个0到number之间的随机数,根据这个随机数将游标移动到相应的行,并输出该行记录。

15.8 更新、添加、删除记录 使用SQL语句更新记录中字段的值。 Statement对象调用方法: public int executeUpdate(String sqlStatement); 通过参数sqlStatement指定的方式实现对数据库表中记录的字段值的更新、实现向数据库表中添加新记录以及以参数sqlStatement给出的删除条件实现对数据库表中记录的删除。 例如:

15.8 更新、添加、删除记录 executeUpdate(“UPDATE chengjibiao SET 数学 = 88 WHERE 姓名=‘王名’”); executeUpdate(“INSERT INTO chengjibiao VALUES( ’2005008’, ’1987-12-02 ’, ’刘明’, 70,95)”); executeUpdate("DELETE FROM chengjibiao WHERE 学号 = ‘2003003’ ");

15.9 预处理语句 当向数据库发送一个SQL语句,比如“Select * From chengjibiao”,数据库中的SQL解释器负责将把SQL语句生成底层的内部命令,然后执行该命令,完成有关的数据操作。如果不断地向数据库提交SQL语句势必增加数据库中SQL解释器的负担,影响执行的速度。如果应用程序能针对连接的数据库,事先就将SQL语句解释为数据库底层的内部命令,然后直接让数据库去执行这个命令,显然不仅减轻了数据库的负担,而且也提高了访问数据库的速度。

对于JDBC,如果使用Connection和某个数据库建立了连接对象con,那么 con就可以调用 prepareStatement(String sql) 方法对SQL语句进行预编译处理,生成该数据库底层的内部命令,并将该命令封装在PreparedStatement对象中,那么该对象调用下列方法都可以使得该底层的内部命令被数据库执行: ResultSet executeQuery() boolean execute() int executUpdate()

在对SQL进行预处理时可以使用通配符“?”来代替字段的值,只要在预处理语句执行之前再设置通配符所表示的具体值即可。例如: sql=con.prepareStatement(“SELECT * FROM chengjibiao WHERE math<?”); 那么在SQL对象执行之前,必须调用相应的方法设置通配符“?”代表的具体值,例如: sql.setInt(1,89); 通配符按着在预处理SQL语句中从左到右依次出现的顺序分别被称为第1个、第2个…通配符。

预处理语句设置通配符“?”的值的常用方法: void setDate(int parameterIndex,Date x) void setDouble(int parameterIndex,double x) void setFloat(int parameterIndex,float x) void setLong(int parameterIndex,long x) void setInt(int parameterIndex,int x) void setString(int parameterIndex,String x)

15.10 数据库访问中的套接字技术 利用套接字连接向服务器发送一个查询的条件,而服务器负责对数据库的查询,然后服务器再将查询的结果利用建立的套接字返回给客户端。