java的jdbc
㈠ 彻底搞懂JDBC的运行过程
前几天笔者发布了博客,手写mybatis彻底搞懂框架原理。为了帮助初学者更好理解mybatis框架,这次讲解一下java的JDBC的运行过程。
JDBC的作用
JDBC的全称是Java DataBase Connection,也就是Java数据库连接,我们可以用它来操作关系型数据库。JDBC接口及相关类在java.sql包和javax.sql包里。我们可以用它来连接数据库,执行SQL查询,存储过程,并处理返回的结果。
JDBC接口让Java程序和JDBC驱动实现了松耦合,使得切换不同的数据库变得更加简单。
JDBC的连接步骤
执行一次JDBC连接,分六个步骤进行:
1. 导入包
在程序中包含数据库编程所需的JDBC类。大多数情况下,使用 import java.sql.* 就足够了
2. 注册JDBC驱动程序
需要初始化驱动程序,这样就可以打开与数据库的通信。
3. 打开一个连接
使用DriverManager.getConnection()方法来创建一个Connection对象,它代表一个数据库的物理连接。
4. 执行一个查询
需要使用一个类型为Statement或PreparedStatement的对象(两者区别看后文),并提交一个SQL语句到数据库执行查询。
5. 从结果集中提取数据
这一步中演示如何从数据库中获取查询结果的数据。使用ResultSet.getXXX()方法来检索的数据结果
6. 清理环境资源
在使用JDBC与数据交互操作数据库中的数据后,应该明确地关闭所有的数据库资源以减少资源的浪费。本文使用了try with resources方式关闭资源,这是JDK7的语法糖,读者可自行搜索。
完整代码如下。
JDBC的最佳实践
JDBC是如何实现Java程序和JDBC驱动的松耦合?
JDBC API使用Java的反射机制来实现Java程序和JDBC驱动的松耦合。看一下上文的JDBC示例,你会发现所有操作都是通过JDBC接口完成的,而驱动只有在通过Class.forName反射机制来加载的时候才会出现。
这是Java核心库里反射机制的最佳实践之一,它使得应用程序和驱动程序之间进行了隔离,让迁移数据库的工作变得更简单。
Statement和PreparedStatement区别
预编译
创建时的区别:
执行时的区别:
由上可以看出,PreparedStatement有预编译的过程,已经绑定sql,之后无论执行多少次,都不会再去进行编译,而Statement 不同,如果执行多次,则相应的就要编译多少次sql,所以从这点看,PreparedStatement的效率会比Statement要高一些。PreparedStatement是预编译的,所以可以有效的防止SQL注入等问题
占位符
PrepareStatement可以替换变量在SQL语句中可以包含?,可以用?替换成变量。
而Statement只能用字符串拼接。
JDBC的ResultSet
在查询数据库后会返回一个ResultSet,它就像是查询结果集的一张数据表。
ResultSet对象维护了一个游标,指向当前的数据行。开始的时候这个游标指向的是第一行。如果调用了ResultSet的next()方法游标会下移一行,如果没有更多的数据了,next()方法会返回false。可以在for循环中用它来遍历数据集。
默认的ResultSet是不能更新的,游标也只能往下移。也就是说你只能从第一行到最后一行遍历一遍。不过也可以创建可以回滚或者可更新的ResultSet,像下面这样。
当生成ResultSet的Statement对象要关闭或者重新执行或是获取下一个ResultSet的时候,ResultSet对象也会自动关闭。
可以通过ResultSet的getter方法,传入列名或者从1开始的序号来获取列数据。
ResultSet的不同类型
根据创建Statement时输入参数的不同,会对应不同类型的ResultSet。如果你看下Connection的方法,你会发现createStatement和prepareStatement方法重载了,以支持不同的ResultSet和并发类型。
ResultSet对象有三种类型。
ResultSet有两种并发类型。
㈡ JDBC使用步骤过程
JDBC操作数据库的基本步骤:
1、加载JDBC驱动程序。
在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机), 这通过java.lang.Class类的静态方法forName(String className)实现。成功加载后,会将Driver类的实例注册到DriverManager类中。
2、提供JDBC连接的URL。
连接URL定义了连接数据库时的协议、子协议、数据源标识。
书写形式:协议:子协议:数据源标识。
3、创建数据库的连接。
要连接数据库,需要向java.sql.DriverManager请求并获得Connection对象, 该对象就代表一个数据库的连接。
使用DriverManager的getConnectin(String url , String username , String password )方法传入指定的欲连接的数据库的路径、数据库的用户名和 密码来获得。
4、创建一个Statement,要执行SQL语句,必须获得java.sql.Statement实例。
Statement实例分为以下3 种类型:
(1)执行静态SQL语句。通常通过Statement实例实现。
(2)执行动态SQL语句。通常通过PreparedStatement实例实现。
(3)执行数据库穗闹早存储过程。通常通过CallableStatement实例实现。
5、执行SQL语句。
Statement接口提供了三种执行SQL语句的方法:executeQuery 、executeUpdate 和execute
6、处理两种情况的结果。
(1)执行更新返回的是本次操作影响到的记录数。
(2)执行查询返回的结果是一个ResultSet对象。
ResultSet包含符合SQL语句中条件的所有行,并且它通过一套get方法提供了对这些弯李 行中数据的访问。
使用结果集(ResultSet)对象的访问方法获取数据。
7、关闭JDBC对象(关闭结果集-->关闭数据库操作对象-->关闭连接)。
操作完成以后要把所有使用的JDBC对象全都关闭,以释放JDBC资源,关闭顺序和声 明顺序相反:
(1)关闭记录集。
(2)关闭声明。
(3)关闭连接对象。
扩猜雀展资料:
一、JDBC(Java DataBase Connectivity,java数据库连接)
是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序,同时,JDBC也是个商标名。
二、特性
Java 具有坚固、安全、易于使用、易于理解和可从网络上自动下载等特性,是编写数据库应用程序的杰出语言。所需要的只是 Java应用程序与各种不同数据库之间进行对话的方法。而 JDBC 正是作为此种用途的机制。
三、用途
简单地说,JDBC 可做三件事:与数据库建立连接、发送 操作数据库的语句并处理结果。
㈢ java jdbc的中文思想
JDBC概念
JDBC(Java DataBase Connectivity)是一种数据库连接技术,
能实现Java程序对各种数据库的访问。由一组使用Java语言编写的类和接口(JDBC API)
组成,他们位于java.sql以及javax.sql中。作用:
1.建立与数据库的访问连接。
2.将编写好的SQL语句发送到数据库执行。
3.对数据库返回的执行结果进行处理。JDBC API工作的四个环节:
1.DriverManager类:依据数据库的不同,管理JDBC驱动。
2.Connection接口:负责连接数据库并担任传送数据的任务。
3.Statement接口:有Connection产生,负责执行SQL语句。
4.ResultSet接口:负责保存Statement执行后所产生的查询结果。JDBC访问数据库的步骤:
1.使用Class.forName()方法加载JDBC驱动类。
Class.forName("JDBC驱动类的名称");
如果系统中不存在给定的类,则会引发ClassNotFoundExceptionyichang。
这里需要try..catch..
2.使用DriverManager类获取数据库的连接。
Connection connection=DriverManager.getConnection(url,username,password);
DriverManager类跟踪已注册的驱动程序,当调用getConnection()方法时,它会
搜索整个驱动程序列表,直到找到能够连接至数据库连接字符串中的指定的数据库
的驱动程序。加载此驱动程序之后,将使用DriverManager类的getConnection()方法
建立与数据库的连接。
3.创建PreparedStatement/Statement接口的实列,发送SQL语句,
String sql="select * from table";
Statement st=connection.createStatement();
ResultSet rs=st.executeQuery(sql);
这里需要明白一点:Statement 并不执行SQL语句,只是将SQL语句
发送给数据库,由数据库来执行SQL语句。
4.处理SQL执行结果,并得到结果集,
执行SQL语句后返回一个结果集ResultSet对象。
处理结果集使用ResultSet对象的next()方法判断结果集是否包含数据。
在结果集部位空的情况下调用ResultSet的getXxx()方法得到记录中字段
对应的值。
while(rs.next()){
int id=rs.getInt("id");
String name=rs.getString("name");
}释放资源
1.先创建的后释放,后创建的先释放。
2.将释放资源放在finally块中,确保程序最终执行释放资源的语句。
if(rs!=null){
rs.close();
}
if(st!=null){
st.close();
}
if(connection!=null){
connection.close();
}
这里需要try..catch..
㈣ java中使用JDBC完成数据库操作的基本步骤是什么
创建一个以JDBC连接数据库的程序,包含7个步骤: x0dx0a 1、加载JDBC驱动程序: x0dx0a 在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机), x0dx0a 这通过java.lang.Class类的静态方法forName(String className)实现。 x0dx0a 例如: x0dx0a try{ x0dx0a //加载MySql的驱动类 x0dx0a Class.forName("com.mysql.jdbc.Driver") ; x0dx0a }catch(ClassNotFoundException e){ x0dx0a System.out.println("找不到驱动程序类 ,加载驱动失败!"); x0dx0a e.printStackTrace() ; x0dx0a } x0dx0a 成功加载后,会将Driver类的实例注册到DriverManager类中。 x0dx0a 2、提供JDBC连接的URL x0dx0a •连接URL定义了连接数据库时的协议、子协议、数据源标识。 x0dx0a •书写形式:协议:子协议:数据源标识 x0dx0a 协议:在JDBC中总是以jdbc开始 x0dx0a 子协议:是桥连接的驱动程序或是数据库管理系统名称。 x0dx0a 数据源标识:标记找到数据库来源的地址与连接端口。 x0dx0a 例如:(MySql的连接URL) x0dx0a jdbc:mysql: x0dx0a //localhost:3306/test?useUnicode=true&characterEncoding=gbk ; x0dx0a useUnicode=true:表示使用Unicode字符集。如果characterEncoding设置为 x0dx0a gb2312或GBK,本参数必须设置为true 。characterEncoding=gbk:字符编码方式。 x0dx0a 3、创建数据库的连接 x0dx0a •要连接数据库,需要向java.sql.DriverManager请求并获得Connection对象, x0dx0a 该对象就代表一个数据库的连接。 x0dx0a •使用DriverManager的getConnectin(String url , String username , x0dx0a String password )方法传入指定的欲连接的数据库的路径、数据库的用户名和 x0dx0a 密码来获得。 x0dx0a 例如: x0dx0a //连接MySql数据库,用户名和密码都是root x0dx0a String url = "jdbc:mysql://localhost:3306/test" ; x0dx0a String username = "root" ; x0dx0a String password = "root" ; x0dx0a try{ x0dx0a Connection con = x0dx0a DriverManager.getConnection(url , username , password ) ; x0dx0a }catch(SQLException se){ x0dx0a System.out.println("数据库连接失败!"); x0dx0a se.printStackTrace() ; x0dx0a } x0dx0a 4、创建一个Statement x0dx0a •要执行SQL语句,必须获得java.sql.Statement实例,Statement实例分为以下3 x0dx0a 种类型: x0dx0a 1、执行静态SQL语句。通常通过Statement实例实现。 x0dx0a 2、执行动态SQL语句。通常通过PreparedStatement实例实现。 x0dx0a 3、执行数据库存储过程。通常通过CallableStatement实例实现。 x0dx0a 具体的实现方式: x0dx0a Statement stmt = con.createStatement() ; x0dx0a PreparedStatement pstmt = con.prepareStatement(sql) ; x0dx0a CallableStatement cstmt = x0dx0a con.prepareCall("{CALL demoSp(? , ?)}") ; x0dx0a 5、执行SQL语句 x0dx0a Statement接口提供了三种执行SQL语句的方法:executeQuery 、executeUpdate x0dx0a 和execute x0dx0a 1、ResultSet executeQuery(String sqlString):执行查询数据库的SQL语句 x0dx0a ,返回一个结果集(ResultSet)对象。 x0dx0a 2、int executeUpdate(String sqlString):用于执行INSERT、UPDATE或 x0dx0a DELETE语句以及SQL DDL语句,如:CREATE TABLE和DROP TABLE等 x0dx0a 3、execute(sqlString):用于执行返回多个结果集、多个更新计数或二者组合的 x0dx0a 语句。 x0dx0a 具体实现的代码: x0dx0a ResultSet rs = stmt.executeQuery("SELECT * FROM ...") ; x0dx0a int rows = stmt.executeUpdate("INSERT INTO ...") ; x0dx0a boolean flag = stmt.execute(String sql) ; x0dx0a 6、处理结果 x0dx0a 两种情况: x0dx0a 1、执行更新返回的是本次操作影响到的记录数。 x0dx0a 2、执行查询返回的结果是一个ResultSet对象。 x0dx0a • ResultSet包含符合SQL语句中条件的所有行,并且它通过一套get方法提供了对这些 x0dx0a 行中数据的访问。 x0dx0a • 使用结果集(ResultSet)对象的访问方法获取数据: x0dx0a while(rs.next()){ x0dx0a String name = rs.getString("name") ; x0dx0a String pass = rs.getString(1) ; // 此方法比较高效 x0dx0a } x0dx0a (列是从左到右编号的,并且从列1开始) x0dx0a 7、关闭JDBC对象 x0dx0a 操作完成以后要把所有使用的JDBC对象全都关闭,以释放JDBC资源,关闭顺序和声 x0dx0a 明顺序相反: x0dx0a 1、关闭记录集 x0dx0a 2、关闭声明 x0dx0a 3、关闭连接对象 x0dx0a if(rs != null){ // 关闭记录集 x0dx0a try{ x0dx0a rs.close() ; x0dx0a }catch(SQLException e){ x0dx0a e.printStackTrace() ; x0dx0a } x0dx0a } x0dx0a if(stmt != null){ // 关闭声明 x0dx0a try{ x0dx0a stmt.close() ; x0dx0a }catch(SQLException e){ x0dx0a e.printStackTrace() ; x0dx0a } x0dx0a } x0dx0a if(conn != null){ // 关闭连接对象 x0dx0a try{ x0dx0a conn.close() ; x0dx0a }catch(SQLException e){ x0dx0a e.printStackTrace() ; x0dx0a } x0dx0a }
㈤ jdbc是什么
JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API。JDBC API提供了一个标准接口,用于与任何关系数据库管理系统(RDBMS)进行交互。
JDBC API包含以下主要组件:
1.JDBC Driver(JDBC驱动程序)
2.Connection(连接)
3.Statement(声明)
4.ResultSet(结果集)
下面我们简单的给大家介绍其组件。
JDBC驱动程序
JDBC驱动程序是一组Java类,它们实现JDBC接口以与特定数据库进行交互。几乎所有数据库供应商(如MySQL,Oracle,Microsoft SQL Server)都提供JDBC驱动程序。例如,MySQL提供了一个名为MySQL Connection / J的JDBC驱动程序,它允许您通过标准JDBC API使用MySQL数据库。
有三种类型的JDBC驱动程序,包括JDBC本机API驱动程序,JDBC-net驱动程序和JDBC驱动程序。
JDBC驱动程序是用纯Java编写的。它将JDBC调用转换为特定于MySQL的调用,并将调用直接发送到特定数据库。要使用JDBC驱动程序,您需要在应用程序中包含驱动程序JAR文件。MySQL Connector / J是JDBC驱动程序。
连接
JDBC的第一个也是最重要的组件是Connection对象。在Java应用程序中,首先加载JDBC驱动程序,然后建立与数据库的连接。通过Connection对象,您可以与数据库进行交互,例如,创建一个Statement来对表执行SQL查询。您可以一次打开多个数据库连接。
声明
要执行SQL查询,例如SELECT,INSERT,UPDATE,DELETE等,可以使用Statement对象。您可以通过Connection对象创建Statement 对象。JDBC提供了几种类型的不同用途,如语句PreparedStatement,CallableStatement 。
结果集
从数据库查询数据后,您将获得一个ResultSet对象。该ResultSet对象提供了一组API,允许您遍历查询结果。
使用JDBC的典型流程如下:
1.首先,加载JDBC驱动程序并创建与数据库的连接。
2.然后,创建Statement并执行查询以获取ResultSet。
3.接下来,遍历并处理ResultSet。
4.关闭ResultSet,Statement和Connection。
本篇文章我们向大家介绍了有关JDBC及其主要组件的一些基本信息:JDBC驱动程序,连接,语句和ResultSet。希望对需要的朋友有所帮助。
㈥ Java里面的JDBC是什么意思啊
Java数据库连接是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。JDBC也是Sun Microsystems的商标。我们通常说的JDBC是面向关系型数据库的。
这种类型的驱动把所有JDBC的调用传递给ODBC,再让后者调用数据库本地驱动代码(也就是数据库厂商提供的数据库操作二进制代码库,例如Oracle中的oci.dll)。
API概述
JDBC API主要位于JDK中的java.sql包中(之后扩展的内容位于javax.sql包中),主要包括(斜体代表接口,需驱动程序提供者来具体实现):
DriverManager:负责加载各种不同驱动程序(Driver),并根据不同的请求,向调用者返回相应的数据库连接(Connection)。Driver:驱动程序,会将自身加载到DriverManager中去,并处理相应的请求并返回相应的数据库连接(Connection)。Connection:数据库连接,负责与进行数据库间通讯,SQL执行以及事务处理都是在某个特定Connection环境中进行的。
可以产生用以执行SQL的Statement。Statement:用以执行SQL查询和更新(针对静态SQL语句和单次执行)。PreparedStatement:用以执行包含动态参数的SQL查询和更新(在服务器端编译,允许重复执行以提高效率)。CallableStatement:
用以调用数据库中的存储过程。SQLException:代表在数据库连接的建立和关闭和SQL语句的执行过程中发生了例外情况(即错误)。
㈦ 什么是JDBC
JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。
JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序,同时,JDBC也是个商标名。
(7)java的jdbc扩展阅读:
jdbc的组件框架:
JavaSoft提供三种JDBC产品组件,它们是Java开发工具包(JDK)的组成部份:JDBC驱动程序管理器、JDBC驱动程序测试工具包和JDBC-ODBC桥。
JDBC驱动程序管理器是JDBC体系结构的支柱。它实际上很小,也很简单;其主要作用是把Java应用程序连接到正确的JDBC驱动程序上,然后即退出。
JDBC驱动程序测试工具包为使JDBC驱动程序运行您的程序提供一定的可信度。只有通过JDBC驱动程序测试的驱动程序才被认为是符合JDBC标准TM的。
JDBC-ODBC桥使ODBC驱动程序可被用作JDBC驱动程序。它的实现为JDBC的快速发展提供了一条途径,其长远目标提供一种访问某些不常见的DBMS(如果对这些不常见的DBMS未实现JDBC)的方法。
参考资料来源:网络—jdbc