7.1 Java的数据库编程 Java中专门设置了一个java.sql包,定义了很多用来实现SQL功能的类,使用这些类,编程人员就可以很方便地开发数据库前端的应用。 因为SQL是一种直接对数据库进行操作的非过程扫描语言,不适合整个数据库应用程序的前端编程,所以需要其他语言来实现SQL语言的功能以完成对数据库的操作。

Slides:



Advertisements
Similar presentations
第五章 通用网关接口 CGI 简介 Htm l Html + CGI Html + asp 网页可以处理动态的信息.
Advertisements

第二章 简单的 SQL 语句. 本章要点  创建一个简单的表  SQL 语句介绍  最简单的查询语句 select  带有限制条件的查询  查询结果的排序显示.
JDBC 基础知识 第 七 章.  Java 的高级组件 回顾 1 本章相关词汇 单 词说 明 driver 驱动,驱动程序 connection 连接 manager 管理器 statement 语句 prepared 预备的,预编译的 result 结果 create 创建,创造 execute.
JSP 与数据库 SQL 语言简介 SQL 语言简介 JDBC 简介 JDBC 简介 使用 JDBC 连接数据库 使用 JDBC 连接数据库 访问数据库 数据库访问应用举例.
第十章 Java 数据库编程. 内容提要 数据库有关概念; 介绍 JDBC 的结构; 重点介绍 JDBC 访问几种数据库的基本过程;
项目八 用户注册系统 信息工程系 杜向然. 技能目标  掌握利用 JDBC 对数据库的访问、更新等操作,实现基本数 据库程序设计知识目标  了解 JDBC 的概念功能、意义及体系结构;  掌握使用 DriverManager 、 Connection 、 PreparedStatement 、
Java 技术与应用 数据库应用 ( 第 14 章 ) 西安交大 卫颜俊 2008 年 12 月 电子信箱: QQ: 网站 : /java.
Chapter 3: SQL.
第14章 JDBC技术和数据库开发应用.
四資二甲 第三週作業 物件導向程式設計.
OceanBase 0.4:从API到SQL 日照
配合< JSP程序设计>例子源代码一起使用
第8章 设计数据库应用网站 本章讲述的主要内容 8.1 数据库基础知识 8.2 使用数据库系统 8.3 SQL查询基础
MVC Servlet与MVC设计模式.
第12章 JDBC数据库应用程序设计.
資料庫 (Database) SQL Server 2008實作
第十一讲 JDBC JDBC基础 JDBC驱动程序 JDBC编程 示例.
数据库概述 简而言之,数据库(DataBase)就是一个存储数据的仓库。为了方便数据的存储和管理,它将数据按照特定的规律存储在磁盘上。通过数据库管理系统,可以有效的组织和管理存储在数据库中的数据。如今,已经存在了Oracle、SQL Server、MySQL等诸多优秀的数据库。在这一章中将讲解的内容包括。
第三章 管理信息系统的技术基础 主要内容: 数据处理 数据组织 数据库技术 4. 计算机网络.
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年.
Chapter13 Java数据库连接 授课教师:赵小敏 浙江工业大学 软件学院
2018/11/15 面向对象与多线程综合实验-数据库操作 教师:段鹏飞.
数据库操作示例 import java.sql.*; //导入java.sql包 public class JDBCDemo {
課程名稱:資料庫系統 授課老師:李春雄 博士
JAVA vs. SQL Server 建國科技大學 資管系 饒瑞佶 2013/4 V1.
胡鹏 王慧锋 TEL: 数据库系统原理课程设计 实验环节1 胡鹏 王慧锋 TEL:
崑山科技大學資訊管理系 伺服網頁程式設計 系統開發細部流程 教師:游峰碩.
電子商務網站建制技術與實習(II) 助教:江宜政 吳昇洋.
2018/11/23 面向对象与多线程综合实验-数据库操作 教师:段鹏飞.
班級:博、碩子一甲 授課老師:鐘國家 助教:陳國政
SQL Server 2000 数据库入门.
大学计算机基础 典型案例之一 构建FPT服务器.
SQL Injection.
辅导课程六.
第一单元 初识C程序与C程序开发平台搭建 ---观其大略
数据库基础 1.
第十二章 SQL語言簡介 講授大綱: 新增資料庫 新增資料表 新增資料 修改資料 刪除資料 查詢資料 透視ASP.NET-第12章
第十章 IDL访问数据库 10.1 数据库与数据库访问 1、数据库 数据库中数据的组织由低到高分为四级:字段、记录、表、数据库四种。
4、按钮事件.
第十三章 JDBC  JDBC简介  JDBC驱动类型  JDBC API  JDBC的发展.
第 7 章 JDBC数据库访问.
第11章 ListView延迟加载效果 授课老师:高成珍 QQ号: QQ群: 、
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 范引娣.
SQL查询语句 蔡海洋.
OceanBase 0.4:从API到SQL 日照
VB与Access数据库的连接.
Web安全基础教程
数据库系统与应用实验 基于SQL Server 2005.
学习目标 1、limit的作用 2、实例操作.
Visual Basic程序设计 第13章 访问数据库
Delphi 7.0开发示例.
Python 环境搭建 基于Anaconda和VSCode.
11 檢視表的建立 11-1 檢視表的基礎 11-2 建立檢視表 11-3 修改與刪除檢視表 11-4 編輯檢視表的內容.
VB与Access数据库的连接.
WEB程序设计技术 数据库操作.
使用ADO访问数据库 李宝智 BonizLee 课程 10564A
第4章 数据查询.
西南科技大学网络教育系列课程 动态网页设计(JSP) 第七章 JSP中数据库的使用.
数据库应用技术 天津电大 翟迎建.
Presentation transcript:

7.1 Java的数据库编程 Java中专门设置了一个java.sql包,定义了很多用来实现SQL功能的类,使用这些类,编程人员就可以很方便地开发数据库前端的应用。 因为SQL是一种直接对数据库进行操作的非过程扫描语言,不适合整个数据库应用程序的前端编程,所以需要其他语言来实现SQL语言的功能以完成对数据库的操作。

7.1.1 数据库编程基础知识 (1)Java数据类型与数据表中的字段对应 (2)创建数据源(ODBC) (3)常用的数据库操作SQL语句

(1)Java数据类型与数据表中的字段对应 数据库 字符类属性 数值类属性 Access 文本( char 、 String) 数字(int、long、float、double) 其中“字节”只可数字 SQL—Server char 字母占1位 汉字占2位 int 、bigint varchar smallint、tinyint nchar 汉字占1位 float nvarchar numeric Text ntext 保存不定长字符串数据 real

char、varchar、text和nchar、nvarchar、ntext辨析 所谓定长就是长度固定的,当输入的数据长度没有达到指定的长度时将自动以英文空格在其后面填充,使长度达到相应的长度; 而变长字符数据则不会以空格填充; text存储可变长度的非Unicode数据,最大长度为2^31-1(2,147,483,647)个字符。

后面三种多了个字母“n”,它表示存储的是Unicode数据类型的字符。它所有的字符都用两个字节表示,即英文字符也是用两个字节表示。 nchar、nvarchar的长度是在1到4000之间。 和char、varchar比较:nchar、nvarchar则最多存储4000个字符,不论是英文还是汉字;而char、varchar最多能存储8000个英文,4000个汉字。 可以看出使用nchar、nvarchar数据类型时不用担心输入的字符是英文还是汉字,较为方便,但在存储英文时数量上有些损失。

(2)创建数据源 以ACCESS为例—— 任务栏“开始” →设置→控制面板→管理工具 →数据源(ODBC) →系统DSN→添加 →Microsoft Access Driver(*.mdb) →完成 →输入数据源名字→选择→在对话框中找到所需要的数据库→ ( 高级→ 输入用户名→密码) →确定

以SQL Server 2000为例—— 先在数据库里建立一个帐户、密码,指定其可以访问的数据库,再点任务栏“开始”按钮→设置→控制面板→管理工具→数据源(ODBC) →系统DSN→添加 → SQL Server →完成 →输入数据源的名称→选择下拉列表中的服务器→下一步 → 点选输入ID和密码的验证 →输入用户名和密码→下一步→(如果正常的话会提示连接成功,否则提示失败) →完成

ODBC 数据源管理中的用户DSN和系统DSN有什么区别?? 用户DSN是与用户相关的,不同用户建立的DSN相互不可见; 而系统DSN与用户无关,所有用户都可见 ; 用户DSN保存在注册表中的'HKEY_CURRENT_USER\Software\ODBC'项下(不包括ODBC驱动)   系统DSN保存在注册表中的'HKEY_LOCAL_MACHINE\Software\ODBC'项下  

(3)常用的数据库操作SQL语句 SELECT语句——查询记录 INSERT语句——插入记录 UPDATE语句——更新记录 DELETE语句——删除记录 CREATE语句——创建表

语句功能 语法格式 建立数据表 CREATE  TABLE  数据表名 (字段名1  数据类型(长度),  字段名2  数据类型(长度),……) 举例:create  table  student(xh  text(9),  xm  text(8) , cj  single(4), nl integer(2))     建立含有xh、xm、cj、nl  4个字段的student表 添加字段 ALTER  TABLE  数据表名 ADD  COLUMN  字段名  数据类型(长度) 举例:alter  table  student  add column  xb  text(2)  '在学生表中添加性别字段 删除字段 ALTER  TABLE  数据表名 DROP  COLUMN  字段名 举例: alter  table  student  drop  column  nl  '将学生表中的年龄字段删除

数据查询 SELECT 字段名表 FROM 子句  WHERE 子句 GROUP BY  子句HAVING  子句 ORDER BY 子句 INTO 子句 举例:select  xh, xm  from  student  where  xb="男"  order  by  xh 从学生表中查询性别为男的学生,显示其学号和姓名并使结果按学号升序排列。 添加记录 INSERT INTO 数据表名(字段名1,字段名2……) VALUES(数据1,数据2……) 举例:insert  into  student (xh, xm, xb)  values("015200101", "王小二", "男") 删除记录 DELETE  FROM  数据表名 WHERE 条件表达式 举例:delete  from  student  where  xb="男" 更新记录 UPDATE  数据表名  SET  新数据值  WHERE  条件表达式 举例:update  student  set  cj=cj+5  where  xb="女"

7.1.2 JDBC的概念 JDBC(Java DataBase Connectivity)是一种用于执行SQL语句的Java API,由一组用Java语言编写的类和接口组成,可以为多种关系数据库提供统一访问,即用Java实现的数据库接口技术。 辅助Java程序实现数据库功能的配套支持技术通称为JDBC。 JDBC的用途: (1)与数据库建立连接 (2)发送SQL语句 (3)处理结果

示例: //与数据库建立连接 Connection con=DriverManager.getConnection(“jdbc:odbc:student”,”user”,”pwd”); //发送SQL语句,从数据库中提取记录 Statement stmt=con.createStatement(); ResultSet rs=stmt.excuteQuery(“select id,name,score from table_student ”); //对读出的记录结果进行处理赋给变量 While (rs.next()){ int sid=rs.getInt(“id”); String sname=rs.getString(“name”); Float scj=rs.getFloat(“score”); }

JDBC 和数据库的通信路径 负责与java应用程序通信,向java应用程序提供数据 Java 应用程序 JDBC API JDBC Driver API 供应商提供的JDBC驱动程序 JDBC/ODBC桥 负责与具体数据环境的连接 ODBC驱动程序 数据库 数据库 JDBC 和数据库的通信路径

四类JDBC驱动程序 第一类把JDBC转换成ODBC,靠ODBC驱动程序与数据库通信 第二类其源代码由两部分组成,一部分是java语言代码,另一部分是本地代码,这类驱动程序和一个数据库客户的API通信; 第三类是一个纯Java客户库,它使用一个独立于数据库的协议,把数据库请求传送给一个服务器组件,这个组件把数据库请求转换成指定数据库协议接受的请求; 第四类是一个纯Java库,直接把JDBC请求转换成指定数据库协议接受的请求。 数据库厂商一般都为其数据库提供第三或第四类驱动程序。

JDBC-ODBC桥的概念 ODBC(Open Database Connectivity,开放数据库互连)是微软公司开放服务结构(WOSA,Windows Open Services Architecture)中有关数据库的一个组成部分,它建立了一组规范,并提供了一组对数据库访问的标准API。这些API利用SQL来完成其大部分任务。ODBC本身也提供了对SQL语言的支持,用户可以直接将SQL语句送给ODBC。 ODBC的最大优点是能以统一的方式处理所有的数据库。

JDBC-ODBC桥是一个JDBC驱动程序,它通过将JDBC操作转换为ODBC操作来实现JDBC操作。 通过odbc子协议,使用URL打开JDBC连接即可使用桥,建立连接前必须将桥驱动程序类sun.jdbc.odbc.JdbcOdbcDriver添加到名为jdbc.drivers的java,lang.System属性中,或者用代码显示加载: Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”);

7.1.3 用JDBC连接数据库 1. 建立数据源 加载Java应用程序所用的数据库的驱动程序。 以JDBC-ODBC桥为例:控制面板→管理工具→数据源(ODBC)→系统DSN→添加→选择后台数据库: SQL server(或MS Access Driver)→ 给出数据源名和服务器名→选择SQL验证方式、输入用户名和密码→选择需要连接的数据库→确定。 例: Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”); String url=”jdbc:odbc:student”;

2. 建立连接 DriverManager类用来处理驱动程序的调入,并且对新的数据库连接提供支持. 2. 建立连接 DriverManager类用来处理驱动程序的调入,并且对新的数据库连接提供支持. 与数据库建立连接的标准方法是调用方法创建对象: Connection con= DriverManager.getConnection ( String url, String user, String password); 访问数据源的用户名 访问数据源的密码 数据源的位置

3. 执行SQL语句 JDBC提供了Statement接口来发送SQL语句,Statement接口的对象由createStatement方法创建; SQL语句发送后返回的结果通常存放在一个ResultSet接口的对象中; ResultSet可以看作一个表,这个表包含由SQL返回的列名和相应的值, ResultSet对象中维持了一个指向当前行的指针,通过一系列getxxx方法检索当前行的各个列,从而显示出来。

4. 关闭连接 statement.close(); connection.close();

7.1.4 JDBC编程 在Java中用JDBC编程主要是对JDBC API的应用,在JDBC API中对数据库的应用主要是对DriverManager类、 Connection、 Statement 、PreparedStatement和 ResultSet这几个接口的应用。 DriverManager类 是JDBC的管理层,跟踪可用的驱动程序,并在数据库和应用程序之间建立连接。通过调用Class.forName()方法可显示地加载驱动程序,然后自动在DriverManager类中注册。

例: Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); String url="jdbc:odbc:CardAccess"; Connection conn = DriverManager.getConnection(url,”uid”,”pwd”);

Statement接口 Statement对象用于将SQL语句发送到数据库中。 Statement接口提供了三种执行SQL语句的方法: executeQuery(String )——用于执行select语句 executeUpdate(String)——用于执行insert 、update、 delete语句及数据定义语句(如create table) execute()——用于执行返回多个结果集、多个更新等复杂功能。 例: Statement stm= conn. createStatement() ; ResultSet rs=stm.executeQuery(“select * from xs”);

 PreparedStatement接口 PreparedStatement 代表一个预编译的SQL语句,是从Statement接口继承而来的,与Statement不同之处: (1) PreparedStatement实例包含已编译好的SQL语句,执行速度比Statement快,需要多次执行的SQL语句经常创建为PreparedStatement对象; (2) 包含在PreparedStatement中的SQL语句中可以具有一个或者多个IN参数,SQL语句中的参数先用 ? 号作占位符. 一般Statement用于SELECT语句,PreparedStatement用于UPDATE语句,ResultSet用于SELECT的结果集。

例:ResultSet rs=stm.executeQuery(“select xh,xm,nl from tb”); ResultSet包含符合SQL语句中条件的所有行,并通过一套get方法访问当前行中的不同列。 ResultSet.next()方法用于移动到记录集中的下一行,并使下一行成为当前行。 列是从左到右编号的,从列1开始。用getXXX方法输入列名时不区分大小写。 例:ResultSet rs=stm.executeQuery(“select xh,xm,nl from tb”); String no= rs.getString(“xh”); String name= rs.getString(“xm”); int age= rs.getInt(3);

用JDBC-ODBC 连接数据库示例 import java.sql.*; public class TestJDBC { public static void main(String args[]) Statement stm; ResultSet rs; Connection conn; PreparedStatement sql2,sql3; String url = "jdbc:odbc:CardAccess"; String user=" "; String password=" "; try {// 使用jdbc与odbc桥创建数据库连接 Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); // 使用getConnection()方法建立连接,第2个参数定义用户名,第3个参数定义密码 conn = DriverManager.getConnection(url,user,password); stm=conn.createStatement();

sql2= conn.prepareStatement(“update STUDENT set 性别=‘男’ where 姓名='Jane'"); sql3= conn.prepareStatement(“insert into STUDENT(学号,姓名, 性别) values('1006','Alice','男')"); sql2.executeUpdate(); //执行更新 // sql3.executeUpdate(); //执行插入 String sql1="select * from STUDENT"; rs=stm.executeQuery(sql1); //得到查询结果并打印数据库原始记录 System.out.print("学号 "); System.out.print("姓名 "); System.out.println("性别"); while(rs.next()){ System.out.print(rs.getLong(1)+" | "); System.out.print(rs.getString(2)+" | "); System.out.println(rs.getString(3)); }

rs.close(); stm.close(); conn.close(); } catch(SQLException sqle) { System.out.println(1+sqle.toString()); catch(Exception e) System.out.println(2+e.toString());