【学习笔记】JDBC:java提供的专门操纵数据库的API JDBC驱动程序的类型 JDBC常用的类与接口

JDBC技术

JDBC的全称是Java DataBase Connectivity,是一套面向对象的应用程序接口,指定了统一的访问各种关系型数据库的标准接口,JDBC是一种底层的API,因此访问数据库时需要在业务逻辑层中嵌入SQL语句。SQL语句是面向关系的,依赖于关系模型,所以通过JDBC技术访问数据库也是面向关系的。JDBC技术主要完成以下几个任务:  与数据库建立一个连接。  向数据库发送SQL语句。  处理从数据库返回的结果。 需要注意的是,JDBC并不能直接访问数据库,必须依赖于数据库厂商提供的JDBC驱动程序。下面详细介绍JDBC驱动程序的分类。

JDBC驱动程序的类型

JDBC的总体结构由4个组件—应用程序、驱动程序管理器、驱动程序和数据源组成。JDBC驱动基本上分为以下4种。  JDBC-ODBC桥:依靠ODBC驱动器和数据库通信。这种连接方式必须将ODBC二进制代码加载到使用该驱动程序的每台客户机上。这种类型的驱动程序最适合于企业网或者用Java编写的三层结构的应用程序服务器代码。  
    本地API一部分用Java编写的驱动程序:
    这类驱动程序把客户机的API上的JDBC调用转换为Oracle、DB2、Sybase或其他DBMS的调用。这种驱动程序也需要将某些二进制代码加载到每台客户机上。  
    JDBC网络驱动:
    这种驱动程序将JDBC转换为与DBMS无关的网络协议,又被某个服务器转换为一种DBMS协议,是一种利用Java编写的JDBC驱动程序,也是最为灵活的JDBC驱动程序。这种方案的提供者提供了适合于企业内部互联网(Intranet)用的产品。为使这种产品支持Internet访问,需要处理Web提出的安全性、通过防火墙的访问等额外的要求。  
    本地协议驱动:

**这是一种纯Java的驱动程序。这种驱动程序将JDBC调用直接转换为DBMS所使用的网络协议,**允许从客户机上直接调用DBMS服务器,是一种很实用的访问Intranet的解决方法。 JDBC网络驱动和本地协议驱动是JDBC访问数据库的首选,这两类驱动程序提供了Java的所有优点。

JDBC中常用的类和接口

在Java语言中提供了丰富的类和接口用于数据库编程,利用这些类和接口可以方便地进行数据访问和处理。本节将介绍一些常用的JDBC接口和类,这些类或接口都在java.sql包中。

.1 Connection接口

Connection接口代表与特定的数据库的连接,在连接上下文中执行SQL语句并返回结果。Connection接口的常用方法如表
在这里插入图片描述

Statement接口

Statement接口用于在已经建立连接的基础上向数据库发送SQL语句。在JDBC中有3种Statement对象,分别是Statement、PreparedStatement和CallableStatement。Statement对象用于执行不带参数的简单的SQL语句;PreparedStatement继承了Statement,用来执行动态的SQL语句;CallableStatement继承了PreparedStatement,用于执行对数据库的存储过程的调用。Statement接口的常用方法如表
在这里插入图片描述

PreparedStatement接口

PreparedStatement接口用来动态地执行SQL语句。通过PreparedStatement实例执行的动态SQL语句,将被预编译并保存到PreparedStatement实例中,从而可以反复地执行该SQL语句。

DriverManager类

DriverManager类用来管理数据库中的所有驱动程序。它是JDBC的管理层,作用于用户和驱动程序之间,跟踪可用的驱动程序,并在数据库的驱动程序之间建立连接。如果通过getConnection()方法可以建立连接,则经连接返回,否则抛出SQLException异常。DriverManager类的常用方法如表所示。
  在这里插入图片描述

ResultSet接口

ResultSet接口类似于一个临时表,用来暂时存放数据库查询操作所获得的结果集。ResultSet实例具有指向当前数据行的指针,指针开始的位置在第一条记录的前面,通过next()方法可将指针向下移。

在这里插入图片描述

连接数据库

要对数据表中的数据进行操作,首先应该建立与数据库的连接。通过JDBC API中提供的各种类,可对数据表中的数据进行查找、添加、修改、删除等操作。
1 连接数据库 要访问数据库,首先要加载数据库的驱动程序(只需要在第一次访问数据库时加载一次),**然后每次访问数据时创建一个Connection对象,接着执行操作数据库的SQL语句,**最后在完成数据库操作后销毁前面创建的Connection对象,释放与数据库的连接。
JDBC操作不同的数据库仅仅是连接方式上的差异,使用JDBC的应用程一旦和数据库建立连接,就可以使用JDBC提供的API操作数据库。

使用JDBC进行如下的操作:

  • 与一个数据库建立连接
  • 向已连接的数据库发送SQL语句
  • 处理SQL语句返回的结果

ResultSet类的next()方法的返回值是boolean类型的数据,当游标移动到最后一行之后会返回false。下面的实例就是将数据表tb_emp中的全部信息显示在控制台上。在主方法中将数据表tb_stu中的数据检索出来,保存在遍历查询结果集ResultSet中,并遍历该结果集。

import java.sql.*;
//导入 javasql包
 public class Gradation{
//创建类
 static Connection con;
//声明 Connection对象
 static Statement sql;
//声明 Statement对象
 static ResultSet res;
//声明 ResultSet对象
 public Connection getConnection(){
//连接数据库方法
//省略了获取据库连接的代码,
 return con;}
//返回 Connection对象
 public static void main(String] args){
//主方法
 Gradation= new Gradation();
//创建本类对象
 con= c.getConnection();
//与数据库建立连接
 try{
sl=con. createStatement();
//执行SQL语句,返回结果集
//实例化 Statement对象
res=sql.executeQuery("select* from tb_stu")
 while(res.next()){
 String id res.getString("id");
//如果当前语句不是最后一条,则进入循环
 String nameres.getString("name");
∥获取列名是id的字段值
 String sex=res.getString("sex");
//获取列名是name的字段值
 String birthday res. getString("birthday");
//获取列名是sex的字段值
 System.out.print("编号:"+id)
//获取列名是 birthday的字段值
 System.outt.print("姓名"+name)
//将列值输出
 System.out.print("性别:"+sex)
}
 System.out. printin("生日:"+ birthday)
} catch(Exception){
 e.printStackTrace();
 }
 }
 }

注意
可以通过列的序号来获取结果集中指定的列值。例如,获取结果集中id列的列值,可以写成getString(“id”)。由于id列是数据表中的第一列,所以也可以写成getString(1)来获取。


java运行环境将JDBC-数据库驱动转化为DBMS(数据库管理系统)所使用的专用协议来实现和特定的DBMS交互信息。
使用JDBC-数据库驱动方式和数据库建立连接需要经过两个步骤:
1.加载JDBC–数据库驱动
2.和指定的数据库建立连接

mysql5.7版本建议将应用程序和数据库服务器建立连接时明确设置是SSL,并设置值是true或false

如果用户要和连接MYSQL驻留在同一计算机上,使用的IP地址可以是127.0.0.1或localhost

向数据库发送SQL查询语句:
try{
Statement sql = con.creatStatement();}
catch(SQLException e){}
使用Statement声明一个SQL语句对象,然后让已创建的连接对象con调用方法creatStatement()创建这个SQL语句对象

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值