在框架盛行的年代,传统的jdbc连接数据库相信很多人已经忘记了,或许也只有学校会用到了,今天就带大家来复习一下,同时给新学习的小伙伴一个参考,如有不对望指正。
首先,来解释一下什么是JDBC,Java DataBase Connectivity,它是Java数据库连接 的缩写,它提供了一套流程用于我们在Java代码中去操作我们的数据库。
其次,在JDBC中主要用到3个对象
Connection对象:用于获取对于数据库的连接
Statement对象:建立了连接之后,需要有操作SQL的对象
ResultSet对象:操作完SQL要有能够接受结果的对象
相信有过工作或者实习的经验的小伙伴或有所体会,在工作的项目中使用框架来操作数据库(例如mybatis框架),写SQL都是非常方便的,但有时候领导让你写个小工具或者小脚本,难道我们还要把整个框架搭建起,建mapper文件再建xml文件,再去实现我们的功能吗?
当然了那并不是一个好的方法,所以我们再识JDBC。
今天就带大家实战一下,在Java中如何使用JDBC来进行MySQL数据库的增删改查,源码文末下载
MySQL版本:5.7
驱动版本:mysql-connector-java-5.1.48
注意:MySQL8版本的不适用,需要下载匹配的的驱动版本
CREATE TABLE student(
`id` INT ,
`name` VARCHAR(40),
`age` int
);
在Navicat中执行以上SQL创建一个空的学生表

package com.it1997;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class MysqlTest {
public static void main(String[] args) throws ClassNotFoundException, SQLException {
// 1、加载驱动(mysql 8 以上换成com.mysql.cj.jdbc.Driver) ClassNotFoundException,
Class.forName("com.mysql.jdbc.Driver");
// 2、数据库连接信息
String url = "jdbc:mysql://localhost:3306/library?useUnicode=true&useCharacter=utf8&useSSL=true";
String username = "root";//数据库用户名
String password = "123456";//数据库密码
// 3、获取数据库连接对象 只有连接上数据库才可以操作数据库
Connection connection = DriverManager.getConnection(url, username, password);
// 4、从连接对象中获取执行sql的statement对象
Statement statement = connection.createStatement();
// 5、通过statement对象来执行SQL语句
String sql = "select * from student"; //sql查询语句
String insertSql = "insert into student values(1,'小陈没烦恼',20);";
String updateSql = "update student set age = 18 where id = 1";
// 6、通过statement的execute方法执行SQL 可以执行增删改查的所有SQL 返回一个布尔值
boolean iFlag = statement.execute(insertSql);
boolean uFlag = statement.execute(updateSql); // 将年龄修改为18
// 7、通过resultSet对象来接收查询的结果
ResultSet resultSet = statement.executeQuery(sql);
while (resultSet.next()){
System.out.println("id="+resultSet.getObject("id"));
System.out.println("name="+resultSet.getObject("name"));
System.out.println("age="+resultSet.getObject("age"));
} // 输出结果
// 释放连接 注意释放顺序,先创建的最后释放
resultSet.close();
statement.close();
connection.close();
}
}


链接:https://pan.baidu.com/s/1Ap14WFFGN4aVc36UhDEgVg
提取码:1997