JDBC(十)

概述

        JDBC(Java Datebase Connectivity,Java数据库连接)是一种可以执行SQL语句的Java API连接到关系数据库,并使用结构化查询语言(SQL)来完成对数据的查询更新。

        通过使用JDBC就可以使用同一种API访问不同的数据库。开发人员使用标准的API编写的程序,根据不同的数据库,加入不同的数据库驱动即可。

JDBC可以完成的三个基本工作
  • 与数据库建立连接
  • 执行SQL语句
  • 获得SQL执行结果

JDBC类型

        ODBC(Open Database Connectivity)开放数据库连接。ODBC和JDBC很像,严格说,JDBC模仿ODBC的设计。ODBC也可以通过一组通用的API访问不要的数据库管理系统,同样,ODBC也需要数据库厂商提供相应的驱动,ODBC负责管理。

四种类型
1. 第一种JDBC驱动:称为JDBC-ODBC桥,这是最早实现JDBC驱动程序的,主要是为了快速推广JDBC。这种驱动将JDBC API映射到ODBC API。JDBC-ODBC也需要驱动(由Sun公司提供)。
  1. 第二种JDBC驱动:直接将JDBC API映射成数据库特定的客户端API。这种驱动程序包含特定数据库代码的本地代码,用于访问特定的数据库客户端。
  1. 第三种JDBC驱动:支持三层结构的JDBC访问方式。主要用于Applet阶段,通过Applet访问数据库。
  1. 第四种JDBC驱动:纯Java的,直接与数据库实例交互。这种驱动是智能的,它知道数据库四使用的底层协议。目前最流行的JDBC驱动。

用法

        JDBC提供了独立于数据库的统一API,用于执行SQL命令。



JDBC编程步骤

导入需要连接数据库的jar

  1. 加载数据库驱动

语法

//加载驱动       
Class.forName(驱动类);
//加载mysql驱动       
Class.forName("com.mysql.jdbc.Driver");
//加载Oracle驱动       
Class.forName("oracle.jdbc.driver.OracleDriver");
  1. 通过DriverManager获取数据库连接

语法

//通过DriverManager获取数据库连接
Connection connection=DriverManager.getConnection(url,user,password);

mysql

String url="jdbc:mysql://你的ip:端口号/数据库名";
String user="root";//连接数据库的用户名
String password="密码";

数据库URL写法遵循

//other和stuff不固定。
jdbc:subprorocol(特顶数据库的驱动程序):other stuff
  1. 获取Statement对象来操作数据库

语法

Statement statement=connection.createStatement();
  1. 执行SQL语句

语法

ResultSet resultSet=statement.executeQuery("select  * from  user_pm");

我的数据库是8.0版本的,jar也用的8.0
在这里插入图片描述

8.0以上注意点

  1. 驱动不一样
  2. url需要serverTimezone=GMT%2B8&useSSL=false参数
//加载mysql驱动 8.0以上
Class.forName("com.mysql.cj.jdbc.Driver");

连接数据库执行查询操作

public static void main(String[] args) throws ClassNotFoundException, SQLException {
    String url="jdbc:mysql://localhost:3306/mydb?serverTimezone=GMT%2B8&useSSL=false";
    String user="root";
    String password="981129";
    //加载mysql驱动
    Class.forName("com.mysql.cj.jdbc.Driver");
    //通过DriverManager获取数据库连接
    Connection connection=DriverManager.getConnection(url,user,password);
    //获取Statement对象来操作数据库
    Statement statement=connection.createStatement();
    ResultSet resultSet=statement.executeQuery("select  * from  user_pm");
    while (resultSet.next()){
        System.out.println("id:"+resultSet.getString("id")+"  username:"+resultSet.getString("username"));
    }
    //关闭资源
    resultSet.close();
    statement.close();
    connection.close();
}
运行结果
在这里插入图片描述



常用接口和类
DriverManager

DriverManager:用于管理JDBC驱动的服务类。程序中使用该类的主要功能是获取Connection对象。
在这里插入图片描述

常用方法
连接数据库的几个方法 在这里插入图片描述
获取驱动
在这里插入图片描述
Connection接口

        Contection代表数据库连接对象,每个Connection代表一个物理连接会话。想要访问数据库,就必须先活动数据库连接。
在这里插入图片描述
        只有获取Statement对象才能执行SQL,获取Statement对象的几个方法。

  1. Statement createStatement() throws SQLException:返回一个Statement对象。
  2. PrepareStatement prepareStatement(String sql) throws SQLException:返回预编译的Statement对象,即将SQL语句提交到数据库进行编译。
  3. CallableStatement prepareCall(String sql)throws SQLException:返回CallableStatement对象,该对象用于调用存取过程。

事务控制的几个方法

  1. 创建保存点: 1. **加粗样式**
  2. 回滚事物 在这里插入图片描述
  3. 设置事物的隔离级别在这里插入图片描述
  4. 是否自动提交事物在这里插入图片描述
  5. 提交事物 在这里插入图片描述

Statement

        用于执行SQL语句的工具接口。
在这里插入图片描述

执行并返回结果的几个方法
在这里插入图片描述在这里插入图片描述

PreparedStatement

        预编译的Statement对象。PreparedStatement是Statement的子接口,它预习数据预编译SQL(这些SQL语句通常带有参数),以后每次改变SQL命令的参数,避免数据库每次都要编译SQL语句,因此性能更好
在这里插入图片描述
        使用PreparedStatement执行SQL语句时,无需传入SQL语句,因为它已经预编译SQL语句,但是需要为预编译的SQL语句传入参数。
在这里插入图片描述

使用PrepareStatement执行SQL语句比Statement好处

  1. PrepareStatement预编译SQL语句,性能更好。
  2. PrepareStatement无需“拼接”SQL语句,编程更简单。
  3. PrepareStatement可以防止SQL注入,安全更好。

ResultSet

        对象结果集。
在这里插入图片描述

问:如果希望使用其他数据库,怎么找到其他数据库的驱动呢?

不同数据库的驱动确实没有什么规律,但无需记住这些驱动类。因为,每个数据库厂商在提供数据库驱动(通常是一个JAR文件)时,会有对应的文档,其中有关于这个驱动类的简介,也有数据库的URL写法。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值