我的编程空间,编程开发者的网络收藏夹
学习永远不晚

JDBC编程

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

JDBC编程

在这里插入图片描述

在实际的开发中,我们大多数都是通过代码来自动执行的,这就需要我们通过编程语言来操作数据库服务器。

在这里插入图片描述

MySQL客户端就是我们使用的黑框框,那么需要用编程语言去适实现客户端,MySQL也为我们提供了很多API去帮助我们实现客户端。

但是不同的数据库就会有不同的API,我们要想使用那个数据库就必须掌握这个数据库的API,比如今天我在公司A使用的是MySQL的数据库,去公司B使用的Oracle的数据库,就要重新学习Oracle的API,这样十分麻烦。

这时候java为我们提供了一套统一的标准JDBC。

JDBC: JDBC(Java DataBase Connectivity Java数据库连接)就是使用java语言操作关系型数据库的一套API

在这里插入图片描述

JDBC是(sun公司)定义的一套操作所有关系型数据库的规则,然后每个数据库厂商根据这个规则去实现这套规则,提供数据库驱动jar包,然后我们可以使用JDBC去操作,真正执行的是数据库驱动jar包中的实现类。

我们在这里展示MySQL的驱动包。

点击: 中央仓库

在这里插入图片描述

在上面搜索MySQL,然后点击MySQL Connector java

在这里插入图片描述

我们可以往下滑选择版本,我们的MySQL是什么版本这里我们对应相应的版本。

在这里插入图片描述

然后点击jar。

在这里插入图片描述

当我们在文件夹看到相应的jar,证明我们的驱动就下载完整。
在这里插入图片描述

我们在创建的文件下建一个空目录,一般命名为lib。

在这里插入图片描述

然后我们把刚才下载好的驱动jar包拉到lib目录,或者ctrl C + V

在这里插入图片描述

然后右键lib选择Add as Library…

在这里插入图片描述

在这里插入图片描述

当我们发现目录下有这些文件,证明我们的驱动就导入好了。

在这里插入图片描述

我们在写jdbc的代码时,看起来挺复杂,实际都是有固定的模板。

在这里插入图片描述

这大概就是JDBC操作数据库的具体流程,接下来,我们一一揭示各个API

DriverManager

DriverManager(驱动管理器)是由SUN公司实现的,提供了基本的获取连接方式。主要作用是管理注册到DriverManager中的JDBC驱动程序,并根据需要使用JDBC驱动程序建立与数据服务器的连接网络。频繁的进行数据库连接会产生很大的开销。

在这里插入图片描述

我们这里通过反射来将驱动加载到内存,这里我们可以发现我们并没有去使用DriverManager而是使用的Driver.

在这里插入图片描述

我们可以发现Driver类中有一个静态代码块中去使用了DriverManager.

因为DriverManager去连接服务器是使用反射去进行的,是非常规操作,多次连接时效率比较低,这里我们不进行详细介绍,我们正常情况下使用的是DataSource的方法去描述服务器。

DataSource

DataSource dataSource = new MysqlDataSource();

在这里插入图片描述

我们可以发现DataSource是JDBD里的API,大部分都是抽象的无法实例化,MysqlDataSource是驱动包提供的类。

在这里我们用DataSource去接收MysqlDataSource对象,更好的实现了高内聚,当然用MysqlDataSource接收也是可以的。

((MysqlDataSource)dataSource).setURL("jdbc:mysql://127.0.0.1:3306/zd?characterEncoding=utf8&useSSL=false");((MysqlDataSource)dataSource).setUser("root");((MysqlDataSource)dataSource).setPassword("123456");

URL:唯一资源地址符
在这里插入图片描述

User:用户名

用户名固定为root,也可以通过配置来修改。

Password:登录数据库的密码

这个密码是我们在安装数据库时,手动设置的,大家一定要记清楚。

此时我们数据源创建的操作,只是去描述了下服务器在那里,访问那个数据库,编码方式是什么,登陆账号密码是什么等等,但还没有真正进行连接访问,下来我们进行连接操作,真正开始通过网络进行通信。

Connection

在这里插入图片描述

大家要注意我们这里使用的ConnectionAPI是java.sql包下的。

Connection是网络通信中的核心概念,叫做"连接"

在这里插入图片描述

我们在获取连接时,发现爆红了,我们看一下提示信息,没有处理的异常,这里我们需要手动的处理一下这个异常throws抛一下这个异常。

//2.与服务器建立连接Connection connection = dataSource.getConnection();

我们需要注意的是我们不是new Connection对象,而是用刚才创建的数据源去获取。

Connection管理事务

这里可以通过Connection对象调用事务方法

//开启事务connection.setAutoCommit(boolean autoCommit);//是否自动提交事务,true是,false否//提交事务connection.commit();//回滚事务connection.rollback();

Statement

Statament的作用:

执行sql语句:

int executeUpdate(sql);//返回受影响的行数ResultSet executeQuery(sql);//返回ResultSet结果集对象
//3.写SQL语句String sql = "insert into student values(001,'小张')";//4.获取一个执行sql的对象Statement statement = connection.createStatement();//5.执行sql,并接收返回结果int ret = statement.executeUpdate(sql);//6.断开连接,释放资源statement.close();connection.close();

在这里插入图片描述

我们可以发现成功插入了,受影响的为一行。

我们可以发现一些这样的弊端: sql语句是写死的,没有对sql语句进行处理,速度慢。

释放资源的时候和开启资源是相反的,先开启的后释放。

ResultSet

ResultSet:是我们执行查询语句的返回结果集。

boolean next(); //判断当前行是否有效,移动光标xxx getXxx(参数名);//获取指定列数据

在这里插入图片描述

我们的next()相当于一个光标由上到下遍历表,get方法是获取指定列的数据。

//3.写SQL语句String sql = "select * from student";//4.获取一个执行sql的对象Statement statement = connection.createStatement();//5.执行sql,并接收返回结果ResultSet ret = statement.executeQuery(sql);while(ret.next()) {     int id = ret.getInt("id");     String name = ret.getString("name");     System.out.println("id: "+id+" name: "+name);        }//6.断开连接,释放资源ret.close();statement.close();connection.close();

在这里插入图片描述

我们可以发现可以将查询的结果打印出来。

在这里插入图片描述

我们需要有几个注意的点,我们执行查询sql的时候是执行的executeQuery方法,增删改执行的是executeUpdate方法。

在这里插入图片描述

我们在接受时,类型为该列的数据类型,方法传入的是该列的名称。

在这里插入图片描述

ResultSet也是资源,我们在使用完之后也要进行释放。

PreparedStatement

在这里插入图片描述

PreparedStatement是可以预防SQL注入问题(SQL注入是通过操作输入来修改事先定义好的SQL语句,到达用代码对服务器攻击的方法)

我们在插入的时候sql语句相当于是直接写死了,那能不能我们手动的去输入自己想插入的数据呢?

在这里插入图片描述

如果我们直接通过字符串拼接的方法去构造这个sql的话,会出现语义偏差,结果有可能会和我们预期偏离。

//通过 ? 占位符代替SQL语句中的参数String sql = "insert into student values(?,?)";PreparedStatement statement = connection.prepareStatement(sql);

因为我们的PreparedStatement对象会对SQL语句进行预编译,所以我们在创建时就需要传入sql。

在这里插入图片描述

我们需要注意占位符的编号是从1开始的。

PreparedStatement对象.setXxx(参数1,参数2);//Xxx为数据类型,参数一为编号,参数二为我们想要赋值具体的值。

在这里插入图片描述

在这里插入图片描述

我们发现我们成功的通过占位符指定内容插入。

在这里插入图片描述

数据库连接池

标准接口:DataSource用来获取连接

SUN公司提供的数据库连接池标准接口,第三方实现。

Connection getConnection();

数据库连接池: 负责分配,管理数据库连接。

好处: 1. 资源复用

      2. 提升系统响应速度      2. 避免数据库连接遗漏

在这里插入图片描述

当我们没有数据库连接池时,当用户访问数据库时,需要建立一个连接,访问完毕之后直接释放连接,再次想访问时,需要重新建立连接,在此过程中需要耗费网络带宽,时间,各种资源等。

在这里插入图片描述

当我们建立一个数据库连接池时,我们每次链接都会将这个连接放入这个池子里,每次连接的时候直接使用,用完之后也不不会释放,而是归还到池子里。

来源地址:https://blog.csdn.net/buhuisuanfa/article/details/128108588

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

JDBC编程

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

JDBC编程

文章目录 一、JDBC简介二、驱动的下载三、JDBC的使用DriverManagerDataSourceConnectionStatementResultSetPreparedStatement数据库连接池 一、JDBC简
2023-08-18

【JDBC】编程(2)-

实现模糊查询(以“查哪个用户的密码中的第二个字符为‘a’为例)......  import java.sql.*;public class DBUtil { /** * 工具类的构造方
【JDBC】编程(2)-
2017-06-28

JSP (3)------JDBC编程1

JDBC API :是一系列的编程接口,可以用来连接数据库,访问数据等。DriverManager : 驱动程序管理类,用来装载驱动程序,为创建数据库连接提供支持。Connection:用于连接某一指定的数据库Statement : 提供了
2023-01-31

6.Java的JDBC编程

文章目录 🌆1. 数据库编程🌆🏯1.1数据库编程的必备条件🏯🏰1.2下载驱动包🏰⛺️1.3导入驱动包:⛺️🏭1.4编写J
2023-08-17

如何实现JDBC编程

本篇文章给大家分享的是有关如何实现JDBC编程,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。前言JDBC,即Java Database Connectivity,java数据库
2023-06-14

MySQL中的JDBC编程该如何分析

这期内容当中小编将会给大家带来有关MySQL中的JDBC编程该如何分析,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。一、数据库编程的必备条件编程语言,如Java,C、C++、Python等 数据库,如Or
2023-06-29

编程热搜

目录