【通关MySQL】Java的JDBC编程
创始人
2024-02-04 07:26:28

✨哈喽,进来的小伙伴们,你们好耶!✨

🛰️🛰️系列专栏:【通关MySQL】

✈️✈️本篇内容:Java的JDBC编程。

🚀🚀代码存放仓库gitee:MySQL码云存放!

⛵⛵作者简介:一名双非本科大三在读的科班Java编程小白,道阻且长,你我同行!

目录

1. 数据库编程的必备条件

2、Java的数据库编程—JDBC

一、概念

二、jdbc优点

3、JDBC使用

 接下来我们就要在项目中导入驱动包。

 4、JDBC开发实例

1、首先我们在src下面新建一个类JdbcTinsertDemo。

 2、首先创建数据源 ,描述了数据库在哪。

设置数据库所在的位置,三条固定写法。

3、和数据库建立网络连接

4、构造一个SQL语句,来完成插入操作

5、执行SQL语句 控制客户端给服务器发送请求

6、断开和数据库的连接,并且释放必要的资源

7、动态拼接写法

代码演示:


在正文开始之前我们首先来了解一下什么是数据库编程的必备条件?

1. 数据库编程的必备条件

编程语言,如Java,C、C++、Python等 。 数据库,如Oracle,MySQL,SQL Server等 。 数据库驱动包:不同的数据库,对应不同的编程语言提供了不同的数据库驱动包,如:MySQL提 供了Java的驱动包mysql-connector-java,需要基于Java操作MySQL即需要该驱动包。同样的, 要基于Java操作Oracle数据库则需要Oracle的数据库驱动包ojdbc。

2、Java的数据库编程—JDBC

一、概念

JDBC是数据库连接是一种用于执行SQL语句的java API,就类似于一个网址,它是java中的数据库连接规范,这个API里面由java.sql.*,javax.sql.*包中的一些类和接口组成,这些都可以为实现sql做基础,这些都为java开发人员操作数据库提供了一个标准的API,可以为多重关系数据库提供同意的访问。

二、jdbc优点

直接底层操作,提供了简单,便捷的访问数据库的方法,跨平台性较强,灵活比较强,可以执行很复杂的SQL语句,说白了就是JDBC要通过Java代码操作数据库,那么如何操作呢?

3、JDBC使用

1、准备数据库驱动包 第一步首先我们需要去MySQL的中央仓库,下载我们的jar包。  MySQL中央仓库地址icon-default.png?t=M85Bhttps://mvnrepository.com/ step1:复制这个网址等待跳转(根据电脑型号不同进入的时间有长有短),进入到这个界面,在搜索框里输入MySQL,在出来的结果选择红色框框里面这个点进去。

 step2:进入之后选择我们电脑对应的MySQL版本,比如博主使用的就是MySQL5.0系列的,那么选择5开头的任意一个都可以,点击进去。

 step3:进入之后找到这个jar包,注意点击红色箭头这个,点击之后就开始下载了。

 接下来我们就要在项目中导入驱动包。

step1:新建一个项目jdbc,在这个项目下新建一个目录lib。

 step2:复制我们刚才下载的jar包,直接右键复制即可,不用安装,复制到我们的lib目录下。

 step3:接着我们右键lib,找到as library,点击。

 4、JDBC开发实例

一般的jdbc开发分为五大具体步骤,下面博主将一步一步演示。

1、首先我们在src下面新建一个类JdbcTinsertDemo。

 2、首先创建数据源 ,描述了数据库在哪。

 DataSource dataSource = new MysqlDataSource();

 DataSource相当于一个interface ,不能实例化对象,所以我们实现类MysqlDataSource。

设置数据库所在的位置,三条固定写法。

        ((MysqlDataSource)dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/test_demo3?characterEncoding=utf8&useSSL=false");((MysqlDataSource)dataSource).setUser("root");//设置用户名 固定是root 也可以配置别的((MysqlDataSource)dataSource).setPassword("数据库密码");//设置密码 登录数据库密码

注解

jdbc:mysql 表示这个url是给jdbc中的mysql来使用的。

127.0.0.1 表示IP地址-> 这里称为环回IP 表示主机自己(相当于Java中的this)。

3306 代表端口号, 一般默认是3306 这么多程序你要把网络数据交给哪个程序呢?

test_demo3 表示要访问的数据库名。

characterEncoding=utf8 访问的字符编码方式。

useSSL=false useSSL表示加密,此处没必要加密 手动关闭。

url:唯一资源地址符,描述了互联网上唯一的一个资源的位置(也就是咋们生活中的网址)。

3、和数据库建立网络连接

(写的jdbc代码本质上是实现一个MySQL客户端,要通过网络和服务器进行通信)

Connection connection = dataSource.getConnection();

注意是 Connection java.sql 这个连接别搞错了。

Connectrion 是网络通信中的核心概念,叫做连接,即找个地方记录下,哪个客户端和哪个服务器,即将要进行通信了。

4、构造一个SQL语句,来完成插入操作

那么在这一步操作之前我们需要打开我们的数据库,刚才导入的数据库名一定是我这里将要使用的数据库,那么我们以student表为例,这里我们新建一个student表。

假如我们要往student表中插入一条数据。

String sq1 ="insert into student values(1,'张三')";//描述了sql是啥样的

那么真正执行SQL语句用到PreparedStatement这个类库,后面的括号里面传入我们的SQL语句。

PreparedStatement statement = connection.prepareStatement(sq1);//真正的执行语句

5、执行SQL语句 控制客户端给服务器发送请求

那么这里面我们会用到executeUpdate这个函数,它的返回值是一个整数,我们定义一个ret用来接收。

int ret = statement.executeUpdate();
System.out.println("ret = "+ret);

注意这里 针对增 删 改: 使用executeUpdate   针对查:使用executeQuery。

6、断开和数据库的连接,并且释放必要的资源

注意这里资源释放的顺序和创建是相反的。

statement.close();
connection.close();

结果演示:

我们先在idea上运行看一下,成功插入了一条语句。

 在MySQL客户端查询插入成功了没有。

 那么,这样写SQL语句是不是有点呆板,我们能否通过自己输入对应的学号姓名来控制我们想插入的数据呢?答案是:可以的!

7、动态拼接写法

那么这里步骤没有变化,唯一变化的就是我们需要添加输入语句,还有sql的写法:

输入语句:

        Scanner sc=  new Scanner(System.in);System.out.println("请输入学号:");int id = sc.nextInt();System.out.println("请输入姓名:");String name = sc.next();

拼接写法SQL:

 String sq1 ="insert into student values("+id+",'"+name+"')";PreparedStatement statement = connection.prepareStatement(sq1);

那么这种字符串拼接的方式 是不是太丑了呢?如何改进?使用下面的动态拼接,注意写法我们通过?的形式这里我们称之为'占位符',实现我们的构造。

String sq1 ="insert into student values(?,?)";//动态拼接
PreparedStatement statement = connection.prepareStatement(sq1);statement.setInt(1,id);//按照下标依次替换 注意下标从1开始计算statement.setString(2,name);System.out.println("sql "+ statement);

结果演示:

MySQL查询一下是否插入成功:

 OK,那么针对JDBC编程的'增'我们这里已经全部演示完毕,那么删和改就是一样的,只需要修改sql语句即可,接下来我们看看查是如何实现的。

代码演示:

import com.mysql.jdbc.Connection;
import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;import javax.sql.DataSource;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;public class jdbcSelectdemo {public static void main(String[] args) throws SQLException {DataSource dataSource = new MysqlDataSource();((MysqlDataSource)dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/test_demo3?characterEncoding=utf8&useSSL=false");((MysqlDataSource)dataSource).setUser("root");((MysqlDataSource)dataSource).setPassword("020719");Connection connection = (Connection) dataSource.getConnection();String sq1 = "select * from student";PreparedStatement statement = connection.prepareStatement(sq1);//写代码则是让java程序快速地,重复的多次执行一些相对固定的SQL//实际开发过程中,操作数据库,99.99%都是通过代码来完成自动的操作数据库//结果集合  类似于迭代器遍历ResultSet resultSet = statement.executeQuery();while (resultSet.next()){//next相当于移动一下光标,光标指向下一行int id = resultSet.getInt("id");String name = resultSet.getString("name");System.out.println(id+":"+name);}resultSet.close();statement.close();connection.close();}
}

代码大致和增删改差不多,唯一的区别就是SQL执行语句不同还有就是用到一个 ResultSet结果集,Resultset主要用于接收JDBC查询语句返回的数据集对象,ResultSet对象保持一个光标指向其当前的数据行。 最初,光标位于第一行之前。 next方法将光标移动到下一行,并且由于在ResultSet对象中没有更多行时返回false ,因此可以在while循环中使用循环来遍历结果集。

相关内容

热门资讯

埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...