mysql-connector-java.jar导入eclipse
注意选择对应自己MySQL的版本。我的是8.0.26。
相对应的.jar包
现在将数据库驱动导入到项目中。
1、再eclipse中建立一个项目,new—folder—文件名,文件名在这里我命名为jdbc。
2、把数据库驱动复制到这个jdbc文件下。
3、右键这个驱动 build path—add build path
在MySQL中建立数据库和表
新建一个Student表,将学号设定为主键。
向Student表中填入数据:
使用JDBC连接数据库
在实际操作中, 要使用 JDBC-ODBC 桥驱动程序连接数据库。 通常, 使用 JDBC 连接数据库可以按照以下几个步骤进行:
( 1) 加载并注册数据库驱动。
( 2) 通过 DriverManager 获取数据库连接。
( 3) 通过 Connection 对象获取 Statement 对象。
( 4) 使用 Statement 接口执行 SQL 语句。
( 5) 操作 ResultSet 结果集。
( 6) 关闭连接, 释放资源。
.url连接,DriverManager的第一个参数,这里的数据库是mydb:
String url =“jdbc:mysql://localhost:3306/{自己设置的数据库名}?useSSL=false&serverTimezone=UTC”;
package com.test;
import java.sql.Statement;
import java.sql.ResultSet;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class Test {
public static void main(String[] args) {
Statement stmt = null;
ResultSet rs = null;
Connection conn=null;
try {
// 1. 注册数据库的驱动,固定写法,MySQL8,加载驱动。
Class.forName("com.mysql.cj.jdbc.Driver");
// 2.通过DriverManager获取数据库连接
String url = "jdbc:mysql://localhost:3306/mydb?useSSL=false&serverTimezone=UTC";
String username = "root";
String password = "1234";
conn = DriverManager.getConnection(url, username, password);
// 3.通过Connection对象获取Statement对象
stmt = conn.createStatement();
// 4.使用Statement执行SQL语句。
String sql = "select * from Student";
rs = stmt.executeQuery(sql);
// 5. 操作ResultSet结果集
System.out.println("姓名 | 学号 | 班级 | 专业");
while (rs.next()) {
String name = rs.getString("姓名"); // 通过列名获取指定字段的值
String id = rs.getString("学号");
String cla = rs.getString("班级");
String maj = rs.getString("班级");
System.out.println(name + " | " + id + " |" + cla + " |" + maj);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
// 6.回收数据库资源
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
rs = null;
}
if (stmt != null) {
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
stmt = null;
}
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
conn = null;
}
}
}
}
运行结果:
姓名 | 学号 | 班级 | 专业
张三 | 001 |01 |01
李四 | 002 |02 |02
王五 | 003 |03 |03
陈六 | 004 |04 |04
数据库的基本操作
查询数据
Connection 创建 Statement 对象的方式主要有 3 种, 分别如下:
createStatement(): 创建基本的 Statement 对象。
prepareStatement(): 创建 PreparedStatement 对象。
prepareCall(): 创建 CallableStatement 对象。
在 查 询 数 据 时 , 既 可 以 利 用 Statement 实 例 通 过 执 行 静 态 SELECT 语 句 完 成 , 也 可 以 利 用PreparedStatement 实例通过执行动态 SELECT 语句完成, 还可以利用 CallableStatement 实例通过执行存储过程完成。
无论利用哪个实例查询数据,都要执行executeQuery()方法,才是真正执行力SELECT语句。同时返回一个ResultSet型的结果集,该结果集中不仅包含满足查询条件的记录,还包含相应数据表的相关信息,例如每一列的名称、类型和列的数量。
编译预处理
PreparedStatement 是与编译预处理有关的类, 是 Statement 的一个子类。
用 Statement 定义的语句是一个功能明确而具体的语句, 而用 PreparedStatement 类定义的 SQL 语句中则包含一个或多个问号“? ” 占位符, 它们对应多个 IN 参数。 带占位符的 SQL 语句可以被编译, 而在后续执行过程中, 这些占位符需要用 set 方法设置为具体的 IN 参数值, 再将这些语句发送至数据库获得执行。
插入数据
利用Statement对象
package com.test;
import java.sql.Statement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class Test {
public static void main(String[] args) {
Statement stmt = null;
Connection conn=null;
try {
// 1. 注册数据库的驱动,固定写法,MySQL8,加载驱动。
Class.forName("com.mysql.cj.jdbc.Driver");
// 2.通过DriverManager获取数据库连接
String url = "jdbc:mysql://localhost:3306/mydb?useSSL=false&serverTimezone=UTC";
String username = "root";
String password = "1234";
conn = DriverManager.getConnection(url, username, password);
// 3.通过Connection对象获取Statement对象
stmt = conn.createStatement();
// 4.使用Statement执行SQL语句。
String sql = "insert into Student(姓名,学号,班级,专业) values('秦七','005','05','语文')";
stmt.executeUpdate(sql);// 执行INSERT语句
} catch (Exception e) {
e.printStackTrace();
} finally {
// 6.回收数据库资源
if (stmt != null) {
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
stmt = null;
}
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
conn = null;
}
}
}
}
运行结果:
利用PreparedStatement 实例执行动态 INSERT 语句批量添加记录。
package com.test;
import java.sql.PreparedStatement;
import java.sql.Connection;
import java.sql.DriverManager;
public class Test {
public static void main(String[] args) {
Connection conn=null;
try {
// 1. 注册数据库的驱动,固定写法,MySQL8,加载驱动。
Class.forName("com.mysql.cj.jdbc.Driver");
// 2.通过DriverManager获取数据库连接
String url = "jdbc:mysql://localhost:3306/mydb?useSSL=false&serverTimezone=UTC";
String username = "root";
String password = "1234";
conn = DriverManager.getConnection(url, username, password);
// 3.使用PreparedStatement执行SQL语句。
String[][] records = { { "张八","006","06","数学"}, { "李九","007","07","计算机"} };
String sql = "insert into Student(姓名,学号,班级,专业)values(?,?,?,?)"; // 定义动态INSERT语句
PreparedStatement prpdStmt = conn.prepareStatement(sql); // 预处理动态INSERT语句
prpdStmt.clearBatch(); // 清空Batch
for (int i = 0; i < records.length; i++) {
prpdStmt.setString(1, records[i][0]); // 为参数赋值
prpdStmt.setString(2, records[i][1]);
prpdStmt.setString(3, records[i][2]);// 为参数赋值
prpdStmt.setString(4, records[i][3]);
prpdStmt.addBatch(); // 将INSERT语句添加到Batch中
}
prpdStmt.executeBatch(); // 批量执行Batch中的INSERT语句
prpdStmt.close();
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
运行结果:
更新数据
利用Statement对象
package com.test;
import java.sql.Statement;
import java.sql.Connection;
import java.sql.DriverManager;
public class Test {
public static void main(String[] args) {
Connection conn=null;
try {
// 1. 注册数据库的驱动,固定写法,MySQL8,加载驱动。
Class.forName("com.mysql.cj.jdbc.Driver");
// 2.通过DriverManager获取数据库连接
String url = "jdbc:mysql://localhost:3306/mydb?useSSL=false&serverTimezone=UTC";
String username = "root";
String password = "1234";
conn = DriverManager.getConnection(url, username, password);
// 3.使用Statement执行SQL语句。
Statement statement = conn.createStatement();
String sql = "update Student set 班级='01' where 专业='计算机'";
statement.executeUpdate(sql);
statement.close();
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
运行结果:
利用PreparedStatement
package com.test;
import java.sql.PreparedStatement;
import java.sql.Connection;
import java.sql.DriverManager;
public class Test {
public static void main(String[] args) {
Connection conn=null;
try {
// 1. 注册数据库的驱动,固定写法,MySQL8,加载驱动。
Class.forName("com.mysql.cj.jdbc.Driver");
// 2.通过DriverManager获取数据库连接
String url = "jdbc:mysql://localhost:3306/mydb?useSSL=false&serverTimezone=UTC";
String username = "root";
String password = "1234";
conn = DriverManager.getConnection(url, username, password);
// 3.使用PreparedStatement执行SQL语句。
String[][] infos = { { "04", "数学" }, { "07", "语文" } };
String sql = "update Student set 班级=? where 专业=?";
PreparedStatement prpdStmt = conn.prepareStatement(sql);
prpdStmt.clearBatch();
for (int i = 0; i < infos.length; i++) {
prpdStmt.setString(1, infos[i][0]);
prpdStmt.setString(2, infos[i][1]);
prpdStmt.addBatch();
}
prpdStmt.executeBatch();
prpdStmt.close();
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
运行结果:
删除数据
利用Statement对象
package com.test;
import java.sql.Statement;
import java.sql.Connection;
import java.sql.DriverManager;
public class Test {
public static void main(String[] args) {
Connection conn=null;
try {
// 1. 注册数据库的驱动,固定写法,MySQL8,加载驱动。
Class.forName("com.mysql.cj.jdbc.Driver");
// 2.通过DriverManager获取数据库连接
String url = "jdbc:mysql://localhost:3306/mydb?useSSL=false&serverTimezone=UTC";
String username = "root";
String password = "1234";
conn = DriverManager.getConnection(url, username, password);
// 3.使用Statement执行SQL语句。
Statement statement = conn.createStatement();
String sql = "delete from Student where 班级='01'";
statement.executeUpdate(sql);
statement.close();
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
运行结果:
利用PreparedStatement
package com.test;
import java.sql.PreparedStatement;
import java.sql.Connection;
import java.sql.DriverManager;
public class Test {
public static void main(String[] args) {
Connection conn=null;
try {
// 1. 注册数据库的驱动,固定写法,MySQL8,加载驱动。
Class.forName("com.mysql.cj.jdbc.Driver");
// 2.通过DriverManager获取数据库连接
String url = "jdbc:mysql://localhost:3306/mydb?useSSL=false&serverTimezone=UTC";
String username = "root";
String password = "1234";
conn = DriverManager.getConnection(url, username, password);
// 3.使用PreparedStatement执行SQL语句。
String[] names = { "数学", "语文" };
String sql = "delete from Student where 专业=?";
PreparedStatement prpdStmt = conn.prepareStatement(sql);
prpdStmt.clearBatch();
for (int i = 0; i < names.length; i++) {
prpdStmt.setString(1, names[i]);
prpdStmt.addBatch();
}
prpdStmt.executeBatch();
prpdStmt.close();
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
运行结果: