- 浏览: 36774 次
- 性别:
- 来自: 福州
最新评论
14、JDBC数据库编程
14.1、为什么需要JDBC
当前所有的B/S系统无一不和数据库之间有交互
JDBC(Java Database Connectivity)是一种可用于执行SQL语句的 Java API
JDBC的应用模型如下图所示:
14.2、JDBC驱动
JDBC 驱动的4种类型
TYPE 1: JDBC-ODBC桥驱动程序
适用于快速的原型系统,没有提供JDBC驱动的数据库如Access
TYPE 2: Native-API驱动程序
利用开发商提供的本地库来直接与数据库通信。比Type1性能略好
TYPE 3: JDBC通过网络的纯Java驱动程序
具有最大的灵活性,通常由那些非数据库厂商提供,是四种类型中最小的
TYPE 4: 原生协议以及纯Java驱动程序
最高的性能,通过自己的本地协议直接与数据库引擎通信,具备在Internet装配的能力
14.3、JDBC实现以下目标
通过使用SQL语句,程序员可以利用java语言开发访问数据库的应用。
数据库供应商和数据库工具开发商可以提供底层的驱动程序。因此他们有能力优化各自的数据库产品的驱动程序。
14.4、JDBC的工作原理
JDBC API 供程序员调用的类和接口被包装在java.sql包中如:
DriverManager类
Connection接口
Statement接口
ResultSet接口
DriverManager
作用:管理不同的JDBC驱动
JDBC驱动
作用:负责连接各种不同的数据库
JDBC API类和接口均在Java.sql和javax.sql程序包中提供。
JDBC API中常使用的类和接口是:
DriverManager 类:为数据库加载驱动程序。
驱动程序接口:提供一个数据库驱动程序。所有的JDBC驱动程序类必须执行驱动程序接口。
连接接口: 使你可以建立Java应用程序与数据库之间的连接。
语句接口:使你可以执行SQL语句。
ResultSet 接口:提供从数据库检索的信息。
SQLException 类:提供与数据库互动时发生的异常的有关信息。
14.5、JDBC接口类和对象
DriverManager类
Class.forName() 显式加载并注册驱动程序类
驱动程序被加载后就出现在DriverManager的驱动程序列表中,并可用于创建连接
Connection对象
建立连接
DriverManager.getConnection(DB_URL, DB_USERNAME, DB_PASSWORD);
JDBC URL
jdbc:< 子协议 >:< 子名称 >
如:jdbc:mysql://localhost:3306/test
发送SQL语句
Statement
PreparedStatement
Statement对象
创建Statement对象
Statement stmt = conn.createStatement();
使用Statement对象执行语句
ResultSet executeQuery()参数是查询语句(select)
Int executeUpdate()参数是DML或DDL语句(insert, update, delete or DDL)
boolean execute()执行可能返回多种结果的语句(任何sql)
ResultSet getResultSet() 获取当前的结果集
int getUpdateCount() 以更新计数的形式获取当前结果;如果结果为 ResultSet 对象或没有更多结果,则返回 -1。
关闭Statement对象
作为一种良好的编程风格,应在不需要的时候显式关闭他们,stmt.close()
ResultSet对象
ResultSet对象又称结果集
行和光标
初始光标停在第一行之前,rs.next() 会使光标向下移一行列
resultSet中的getXxx()方法提供了对当前行某列值的访问
getXxx(String 列名) 列名不区分大小写
getXxx(int 列编号) 编号从 1 开始
14.6、JDBC访问数据库的基本步骤
①注册JDBC驱动程序;
注册驱动程序有三种方式:
JAVA规范中明确规定:所有的驱动程序必须在静态初始化代码块中将驱动注册到驱动程序管理器中。
方式一:Class.forName(“oracle.jdbc.driver.OracleDriver”);
方式二:Driver drv = new oracle.jdbc.driver.OracleDriver();
DriverManager.registerDriver(drv);
方式三:编译时在虚拟机中加载驱动
javac –Djdbc.drivers = oracle.jdbc.driver.OracleDriver xxx.java
java –D jdbc.drivers=驱动全名 类名
使用系统属性名,加载驱动 -D表示为系统属性赋值
附?: mysql的Driver的全名com.mysql.jdbc.Driver
SQLServer的Driver的全名com.microsoft.jdbc.sqlserver.SQLServerDriver
②建立到DB连接;
conn=DriverManager.getConnection(“jdbc:oracle:thin:@192.168.0.1:1521:test”, ” User”,” Pasword”);
IP地址及端口号和数据库实例名
用户名密码码
Connection连接是通过DriverManager的静态方法getConnection(.....)来得到的,这个方法的实质是把参数传到实际的Driver中的connect()方法中来获得数据库连接的。
Oracle URL的格式:
jdbc:oracle:thin:(协议)@XXX.XXX.X.XXX:XXXX(IP地址及端口号):XXXXXXX(所使用的库名)
MySql URL的写法 例: jdbc:mysql://192.168.0.1:3306/test
③获得Statement对象;
stat = conn.createStatement();
④通过Statement执行Sql语句;
sta.executeQuery(String sql);返回一个查询结果集。
sta.executeUpdate(String sql);返回值为int型,表示影响记录的条数。
将sql语句通过连接发送到数据库中执行,以实现对数据库的操作。
⑤处理结果(有的话);
使用Connection对象获得一个Statement,Statement中的executeQuery(String sql) 方法可以使用select语句查询,并且返回一个结果集 ResultSet通过遍历这个结果集,可以获得select语句的查寻结果,ResultSet的next()方法会操作一个游标从第一条记录的前面开始读取,直到最后一条记录。executeUpdate(String sql) 方法用于执行DDL和DML语句,比如可以update,delete操作。
只有执行select语句才有结果集返回。
⑥与数据库断开连接。
关闭数据库连接(释放资源) 调用.close()
rs.close(); sta.close(); con.close();
ResultSet Statement Connection是依次依赖的。
注意:要按先ResultSet结果集,后Statement,最后Connection的顺序关闭资源,因为Statement和ResultSet是需要连接时才可以使用的,所以在使用结束之后有可能其它的Statement还需要连接,所以不能现关闭Connection。
14.7、实例
import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class JDBCTest { public static final String DB_DRIVER = "com.mysql.jdbc.Driver"; public static final String DB_URL = "jdbc:mysql://localhost:3306/test"; public static final String DB_USERNAME = "root"; public static final String DB_PASSWORD = "root"; public static void main(String[] args){ Connection conn = null; Statement stmt = null; ResultSet rs = null; try{ //1、装载JDBC驱动 Class.forName(DB_DRIVER); //2、获取数据库连接 conn = DriverManager.getConnection(DB_URL, DB_USERNAME, DB_PASSWORD); //3、创建数据库语句 String sql = "seletc * from users"; stmt = conn.createStatement(); //执行数据库操作 rs = stmt.executeQuery(sql); //从结果集中获取数据 while(rs.next()){ int id = rs.getInt("id"); String name = rs.getString("name"); int age = rs.getInt("age"); System.out.println("id = " + id +" name = " + name +" age="+age); } }catch(Exception e){ e.printStackTrace(); }finally{ //6、释放资源 if(rs != null){ try{ rs.close(); }catch(SQLException e){ e.printStackTrace(); } } if(stmt != null){ try{ stmt.close(); }catch(SQLException e){ e.printStackTrace(); } } if(conn != null){ try{ conn.close(); }catch(SQLException e){ e.printStackTrace(); } } } } }
14.8、JDBC连接几种常见数据库
- mysql-connector-java-5.1.18-bin.jar (771.4 KB)
- 下载次数: 1
发表评论
-
13、数据库(SQL)
2012-07-20 09:22 48413、数据库(SQL) 13.1、什么是SQL S ... -
12、java集合类
2012-07-12 09:58 86212、java集合类 12.1、Collection框 ... -
11.I/O输入输出流
2012-06-14 10:00 96311、IO输入输出流 11. ... -
10.多线程
2012-06-13 10:29 75710、多线程 10.1、 进程与线程 进程: 简单 ... -
09.面向对象(6)--访问控制
2012-06-12 15:19 9139.类成员的访问控制 9.1、private访问控制 ... -
08.面向对象(5)--this、super、final、static等关键字
2012-06-12 11:02 8918、this、super、final、 ... -
07.面向对象(4)--抽象类和接口
2012-06-12 09:59 7657.接口和抽象类 7.1 ... -
06.面向对象(3)--面向对象3大特性:封装、继承和多态
2012-06-11 11:09 7466、面向对象3大特性:封装、继承和多态 6.1 封装性 ... -
05.面向对象(2)--函数方法
2012-06-11 10:32 7385、函数方法 5.1、方的重载 函数的重载就是在同 ... -
04.面向对象(1)--面向对象的概念
2012-06-09 11:41 7024、面向对象 4.1、面向对象的概念 4.1.1、 面向过 ... -
03.java 运算符、流程控制
2012-06-08 17:25 8123.1 java中的运算符 运算符是一种特殊符号 ... -
02.java 标示符、变量、常量
2012-06-08 14:34 839java 标示符、变量、常量 2.1 java是严格区分大小 ... -
01.java 介绍及环境变量配置
2012-06-08 13:04 7091.1 java 概述 1.1.1、java的历史地位 ...
相关推荐
(1)熟练掌握JDBC操作数据库的整个过程; (2)利用预处理语句操作数据库; (3)掌握可滚动和可更新的结果集的基本操作方法; (4)理解JDBC中实现事务处理的基本方法; (5)理解数据库连接池的基本原理和思想,...
数据库原理实验六ODBC和JDBC数据库编程实用 本文档主要介绍了数据库原理实验六中的ODBC和JDBC数据库编程实用,实验报告题目包括ODBC配置、ODBC编程、JDBC实现对数据库的连接、查询、插入、修改和删除等内容。 一、...
【JDBC数据库编程】 JDBC(Java Database Connectivity)是Java编程语言中用于访问数据库的关键技术。它是Sun Microsystems公司提供的一套API,允许Java程序通过SQL语句与各种类型的数据库进行交互,包括Oracle、...
### IT—JDBC数据库编程的研究 #### 摘要与引言 在当前信息技术领域,尤其是Web应用程序的设计与开发过程中,提升数据库响应性能对于优化应用性能至关重要。随着Web应用程序从简单的信息展示平台向复杂的业务处理...
在"jdbc.rar_jdbc数据库编程"这个压缩包中,我们可以预期找到一些关于使用JDBC进行数据库编程的资料。下面我们将深入探讨JDBC的关键概念和步骤,这对于初学者来说是非常有益的。 1. **JDBC驱动程序**:JDBC驱动是...
### Java JDBC数据库编程技术详解 #### 一、引言 在现代软件开发中,数据库扮演着极其重要的角色,尤其在商业应用领域。无论是简单的数据存储还是复杂的数据处理,数据库都是必不可少的一部分。Java作为一门广泛...
这是一本关于JDBC API数据库编程的书,主要介绍Java程序设计基础、 SQL基础知识、JDBC(Java数据库连接)应用、接口和类,以及如何在JSP和Servlet中使用JDBC,并以完整的实例程序说明 JDBC API(应用程序编程接口)...
第11章JDBC数据库编程
**JDBC API数据库编程实作教材** 在Java开发中,JDBC(Java Database Connectivity)是连接Java应用程序与各种类型数据库的重要桥梁。它提供了一组接口和类,使得开发者能够使用标准的Java代码来访问和操作数据库。...
实验八:JDBC数据库编程二——存储过程与函数 add 实验八:JDBC数据库编程二——存储过程与函数/2.addTwoNumAndReturn. 实验十:Socket编程 add 实验十:Socket编程/客户端代码client.java. 实验四:集合的...
JDBC数据库编程详细介绍,附有经典案例和练习题
【Java JDBC数据库编程1数据库基础】 本章主要介绍了数据库编程的基础知识,重点是Java通过JDBC与数据库的交互。首先,我们来看一下数据库的基本概念。 1. 数据库基础: - **4D数据(DATA)**:指的是存储在...
**JDBC数据库编程,通讯时间查询(MySQL)** 在Java应用程序中,JDBC(Java Database Connectivity)是连接数据库的标准API,它允许Java程序与各种类型的数据库进行交互。本主题主要探讨如何利用JDBC来实现对MySQL...
**JDBC 3.0 数据库编程** JDBC(Java Database Connectivity)是Java语言中用于与各种数据库交互的标准API,由Sun Microsystems开发并被Oracle公司继承。JDBC 3.0是该API的一个重要版本,它在JDBC 2.0的基础上进行...
总结而言,JDBC是Java数据库编程的基础,理解和掌握JDBC的原理和使用方法对于任何Java开发者来说都是必要的,特别是对于那些需要进行数据库操作的项目。同时,随着技术的发展,开发者也应该了解和考虑使用ORM框架以...