文章目录

    • 概要
    • 整体架构流程
    • 技术细节
    • 小结

概要

JDBC(Java DataBase Connectivity),即Java数据库连接。简而言之,就是通过Java语言来操作数据库。

我们可以把JDBC理解成是官方定义的一套操作所有关系型数据库的规则,规则即接口。

也就是说,官方定义了一套操作所有关系型数据库的接口,然后让各个数据厂商(Mysql、Oracle等)用实现类去实现这套接口,再把这些实现类打包(数据驱动jar包),并提供数据驱动jar包给我们使用。

我们可以使用这套JDBC接口进行编程,但是真正执行的代码是驱动jar包中的实现类。

为什么?因为JDBC是通过接口来调用方法的,当你导入了驱动jar包(实现类)后,那调用的方法肯定是实现类里面的方法。

整体架构流程

一、Mysql驱动包下载

想要通过JDBC连接并操作Mysql数据库,我们需要下载一个Mysql数据库驱动jar包。

两种下载方式(点击链接可直接前往下载)

方式一:MySQL :: Download MySQL Connector/J (Archived Versions)

方式二:MySQL :: Download MySQL Connector/J (Archived Versions)

下载后的jar包是这样的(我的版本是5.1.7):

windows系统:

mysql-connector-java-5.1.7-bin.jar

二、JDBC实现步骤

前提:创建一个Java项目,在项目中新建一个lib目录(为了方便管理jar包,需要把jar包放在此目录下),在src目录下建一个包,包下再建一个类。

最终的目录结构是这样的:

注:把下载的jar包拷贝到项目的lib下,别忘了点击lib→右键→Add as Library(这才是真正导入jar包)。

具体步骤:

1、导入驱动jar包 2、注册驱动 3、获取数据库的连接对象 4、定义sql语句 5、获取执行sql语句的对象 6、执行sql并接收返回结果 7、处理结果 8、释放资源

实例:

//向部门表中插入一条数据private static void f1 () throws Exception {//1.注册驱动-反射去加载jar包中的com.jdbc.Driver这个类中的DriverManager.registerDriver(new Driver());Class.forName("com.mysql.jdbc.Driver");//2.获取连接对象Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/salary" /> 
运行结果:

代码分析:

注册驱动是为了让程序知道,我们用的是哪个版本、哪个驱动包。

获取数据库的连接对象Connection,我们可以把这个对象理解成是Java代码与数据库之间的桥梁,将两者连接起来。

我们定义的sql语句,将来会通过一些操作发送给数据库执行。从而达到Java代码操作数据库的目的。

由于Connection是连接对象,无法直接执行。所以我们要通过conn.createStatement()来获取执行sql语句的对象Statement

通过Statement对象执行sql后,会返回一个int类型的数值,这个数值指的就是影响数据库表的行数。

最后,要对返回的结果进行处理,并释放资源(为了避免内存泄漏)

更新前的数据库(salary),t_dept表中的数据:

向部门表中修改一条数据SQL语句:
update t_dept set leader='李总' where did=19
更新后的数据库(salary),t_dept表中的数据:

向部门表中删除一条数据SQL语句:
delete from t_dept where did=19
删除后的数据库(salary),t_dept表中的数据:

查询表中的数据:

在这之前我们先了解statement的两种常用方法:

1.executeUpdate 用于 新增 修改 删除

2.executeQuery 用于 查询

实例:
//向部门表中查询多条数据private static void f4() throws Exception {Class.forName("com.mysql.jdbc.Driver");Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/salary" />

运行结果:

技术细节

下载mysql的可视化SQLyog:

下载地址:SQLyog Ultimate - Free Trial Request Form | Webyog

有需求的可以私信我!!!

下面的是客户端破解序列号:

创建表的sql语句:

CREATE TABLE `t_dept` (
`did` int NOT NULL AUTO_INCREMENT,
`dname` varchar(30) DEFAULT NULL,
`dlocation` varchar(30) DEFAULT NULL,
`leader` varchar(20) DEFAULT NULL,
PRIMARY KEY (`did`)
) ENGINE=InnoDB AUTO_INCREMENT=18 DEFAULT CHARSET=utf8mb3;

insert into `t_dept`(`did`,`dname`,`dlocation`,`leader`) values (1,'北京分部','中关村','陈总'),(2,'上海分部','上海世贸大厦','李总'),(3,'广州分部','广州双子塔','徐总'),(4,'深圳分部','深圳信兴广场','蒋总'),(5,'武汉分部','武汉绿地中心','王总'),(6,'杭州分部','浙江环球中兴','江总'),(7,'美国分部','五角大楼','梁总'),(8,'俄罗斯分部','莫斯科红场','周总'),(9,'法国分部','塞纳河畔','吴总'),(10,'德国分部','德国帝国国会大厦','曹总'),(11,'印度分部','曼谷','陈总'),(12,'越南分部','首都','陈总'),(13,'土耳其分部','首都','陈总'),(14,'希腊分部','首都','陈总'),(15,'联合国总部','首都','陈总'),(16,'欧盟分部','首都','陈总'),(17,'阿拉伯分部','首都','陈总');

CREATE TABLE `t_emps` (
`id` varchar(32) NOT NULL,
`name` varchar(20) DEFAULT NULL,
`sex` varchar(3) DEFAULT NULL,
`birth` date DEFAULT NULL,
`salary` double DEFAULT NULL,
`deptId` int DEFAULT NULL,
PRIMARY KEY (`id`)
)

insert into `t_emps`(`id`,`name`,`sex`,`birth`,`salary`,`deptId`) values ('a0001','曹操','男','1021-06-01',8000,1),('a0002','曹植','男','1021-06-01',7500,1),('a0003','曹丕','男','1021-06-01',7600,1),('a0004','曹冲','男','1021-06-01',7700,1),('a0005','曹仁','男','1021-06-01',7200,1),('b0001','貂蝉','女','1021-07-01',6000,2),('b0002','大乔','女','1021-07-01',6100,2),('b0003','小乔','女','1021-07-01',6200,2),('b0004','孙小妹','女','1021-07-01',6300,2),('b0005','曹妃','女','1021-07-01',6400,2),('c0001','刘备','男','1021-08-01',9000,3),('c0002','关羽','男','1021-08-01',8800,3),('c0003','张飞','男','1021-08-01',8600,3),('c0004','赵云','男','1021-08-01',8400,3),('c0005','马超','男','1021-08-01',8500,3),('d0001','孙权','男','1021-09-01',9200,4),('d0002','吕蒙','男','1021-09-01',8000,4),('d0003','陆逊','男','1021-09-01',7800,4),('d0004','鲁肃','男','1021-09-01',8300,4),('d0005','周瑜','男','1021-09-01',8600,4),('e0001','董卓','男','1021-10-01',10000,5),('e0002','吕布','男','1021-10-01',9900,5),('e0003','丁原','男','1021-10-01',9800,5),('e0004','袁绍','男','1021-10-01',10200,5),('e0005','袁术','男','1021-10-01',10100,5);

具体实现代码:
package com.hp.study;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.Statement;public class Jdbc01 {/*statement 有两个常用的方法1. executeUpdate 用于 新增 修改 删除2. executeQuery 用于 查询*/public static void main(String[] args) throws Exception {f4();}//向部门表中查询多条数据private static void f4() throws Exception {Class.forName("com.mysql.jdbc.Driver");Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/salary" />

小结

今天讲述了如何在jdbc连接mysql数据库详解,可以对数据进行基本操作,但是由于代码比较多,我们要实现封装代码的功能,让我们的代码看上去更加清晰明了,高大上,并且同时实现查询一条数据和多条数据的功能,还需要更多的努力。以上是我分享给大家的关于JDBC连接并操作Mysql数据库以及JDBC的增删改查一些总结。

明天会具体探究JDBC连接后mysql的增删改查数据的操作,会牵扯到反射,多态,封装,SSM框架等知识点的学习,有兴趣的可以等待一下,明天准时发布!