目录
一、导入对应的jar包
需要包含包含数据库编程所需的JDBC类的包。
二、注册JDBC驱动程序
初始化驱动程序,以便可以打开与数据库的通信通道。
// mysql 8.0 以后语法
Class.forName ("com.mysql.cj.jdbc.Driver");
// mysql 8.0 之前语法
Class.forName ("com.mysql.jdbc.Driver");
三、数据库url配置
初始化驱动程序,以便可以打开与数据库的通信通道。
//数据库用户名
String userName = "root";
//数据库密码
String passWord = "123456";
// mysql8以后要设置时区 serverTimezone=UTC
// localhost----------主机名
// 3306 --------- 数据库端口号
// mytest ----------- 要连接的数据库名
String url = "jdbc:mysql://localhost:3306/mytest?serverTimezone=UTC";
四、创建连接对象
最后,调用DriverManager对象的getConnection()方法来建立实际的数据库连接。
//获得连接
Connection connection = DriverManager.getConnection (url, userName, passWord);
五、创建Statement对象
创建Statement对象后,您可以使用它来执行一个SQL语句,其中有三个执行方法之一。
1、execute(String SQL)
boolean execute(String SQL):如果可以检索到ResultSet对象,则返回一个布尔值true; 否则返 回false。使用此方法执行SQL DDL语句或需要使用真正的动态SQL时。
2、executeUpdate(String SQL)
int executeUpdate(String SQL):返回受SQL语句执行影响的行数。使用此方法执行预期会影响 多个行的SQL语句,例如INSERT,UPDATE或DELETE语句。
3、executeQuery(String SQL)
ResultSet executeQuery(String SQL):返回一个ResultSet对象。当您希望获得结果集时,请使 用此方法,就像使用SELECT语句一样。
// 定义sql,创建状态通道(进行sql语句的发送)
Statement statement = connection.createStatement ();
六、CRUD操作
1、查询
// 查询学生表所有信息
ResultSet resultSet = statement.executeQuery ("select * from student");
// 取出结果集信息
while (resultSet.next ()) {
// 取出数据 resuleSet.getxxx("列名") xxx数据类型
System.out.println ("姓名: " + resultSet.getString ("studentname") +
"" +
",\t性别:" + resultSet.getString ("sex") +
",\t出生日期:" + resultSet.getDate ("borndate"));
}
关于 ResultSet 的方法
- Boolean next(): 下一条数据
- int getInt(int columnIndex) : 获取数据表中字段类型为int类型的数据
返回值类型 | 方法 | 描述 |
Boolean | next() | 判断是否还有下一条数据 |
int | getInt(int columnIndex) | 获取数据表中一条数据字段类型为int类型的数据 columnIndex --- 字段名 要与数据库中的一致 |
String | getString(String columnLabel) | 获取数据表中一条数据字段类型为String类型的数据 columnLabel --- 字段名 要与数据库中的一致 |
Object | getObject(Object columnLabel) | 获取数据表中一条数据字段的数据(r任何类型) columnLabel --- 字段名 要与数据库中的一致 |
2、新增
// 学生表中插入一条数据
int row = statement.executeUpdate ("insert into student(studentno,studentname,sex,borndate,loginpwd,gradeid,address,email) values('S1231283','云2','女','2001-01-01',347,1,'北极','2425@qq.com')");
3、删除
//删除学生表中 学生姓名为 云 的学生信息
int dropRow = statement.executeUpdate ("delete from student where studentname = '云'");
4、更新
// 将学生表中 学生姓名为 金蝶 的学生性别设置为女
int updateRow = statement.executeUpdate ("update student set sex = '女' where studentname = '金蝶'");
七、关闭数据库连接
if (resultSet != null) {
resultSet.close ();
}
if (statement != null) {
statement.close ();
}
if (connection != null) {
connection.close ();
}
八、注意
- 以上均为伪代码,真实环境下需要进行异常处理
九、总代码
pppps:代码仅供参考 ,如果直接粘贴记得配置成自己的数据库
package com.yun.jdbc;
import java.sql.*;
public class MyJdbc {
public static void main (String[] args) {
Connection connection = null;
Statement statement = null;
ResultSet resultSet = null;
Savepoint here = null;
// 1、加载驱动
try {
Class.forName ("com.mysql.cj.jdbc.Driver");
// 2、获得连接
String userName = "root";
String passWord = "123456";
// mysql8以后要设置时区 serverTimezone=UTC
String url = "jdbc:mysql://localhost:3306/mytest?serverTimezone=UTC";
connection = DriverManager.getConnection (url, userName, passWord);
// 3、定义sql,创建状态通道(进行sql语句的发送)
statement = connection.createStatement ();
// 设置取消自动提交
connection.setAutoCommit (false);
//查询
resultSet = statement.executeQuery ("select * from student");
// 取出结果集信息
while (resultSet.next ()) {
// 取出数据 resuleSet.getxxx("列名") xxx数据类型
System.out.println ("姓名: " + resultSet.getString ("studentname") +
"" +
",\t性别:" + resultSet.getString ("sex") +
",\t出生日期:" + resultSet.getDate ("borndate"));
}
//新增
int row = statement.executeUpdate ("insert into student(studentno,studentname,sex,borndate,loginpwd,gradeid,address,email) values('S1231283','云2','女','2001-01-01',347,1,'北极','2425@qq.com')");
// 保存点
here = connection.setSavepoint ("here");
// 异常
System.out.println (5/0);
if(row != 0) {
System.out.println ("新增成功");
} else {
System.out.println ("新增失败");
}
//删除
int dropRow = statement.executeUpdate ("delete from student where studentname = '云'");
if (dropRow != 0) {
System.out.println ("删除成功");
} else {
System.out.println ("删除失败");
}
//修改
int updateRow = statement.executeUpdate ("update student set sex = '女' where studentname = '金蝶'");
if(updateRow != 0) {
System.out.println ("修改成功");
}else {
System.out.println ("修改失败");
}
// 提交
connection.commit ();
} catch (ClassNotFoundException e) {
e.printStackTrace ();
} catch (SQLException throwables) {
throwables.printStackTrace ();
try {
// 回滚到保存点
connection.rollback (here);
} catch (SQLException e) {
e.printStackTrace ();
}
} finally {
// 关闭连接
try {
if (resultSet != null) {
resultSet.close ();
}
if (statement != null) {
statement.close ();
}
if (connection != null) {
connection.close ();
}
} catch (SQLException throwables) {
throwables.printStackTrace ();
}
}
}
}