此文章中所用的数据库信息、mysql 驱动等一切信息都建立在这篇文章之上
IDEA 实现 JDBC 操作 mysql
Statement 对象
Statement 是用来执行数据库的 SQL 语句的
通常执行增删改时使用 executeUpdate() 方法
执行查询时使用 executeQuery() 方法
封装 JDBCUtils 工具类
通过我们操作 JDBC 其中是有很多重复的代码的。
我们可以自己封装一个操作 JDBC 的工具类,降低代码之间的耦合度、提高开发效率,工具类代码如下
- 首先在项目的 src 目录下创建一个 db.properties 文件,存放连接数据库的基本信息
- db.properties 文件如下
# 数据库驱动
driver=com.mysql.jdbc.Driver
# 数据库连接
url=jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf8&useSSL=true
# 用户名
username=root
# 密码
password=123456
- JDBCUtils 代码如下:
package com.jdbc.test.util;
import java.io.InputStream;
import java.sql.*;
import java.util.Properties;
/**
* JDBC 工具类
*
* @author: 南独酌酒 <211425401@126.com>
* @date: 2020/9/22 20:31
*/
public class JDBCUtils {
private static String driver = null;
private static String url = null;
private static String username = null;
private static String password = null;
// 静态代码块,项目一启动就会执行
static {
try {
// 数据库连接创建一次即可
InputStream in = JDBCUtils.class.getClassLoader().getResourceAsStream("db.properties");
Properties properties = new Properties();
properties.load(in); // 加载 db.properties 文件
// 从 db.properties 文件中读取属性连接数据库的信息
driver = properties.getProperty("driver");
url = properties.getProperty("url");
username = properties.getProperty("username");
password = properties.getProperty("password");
} catch (Exception e) {
e.printStackTrace();
System.err.println(e.getMessage());
}
}
/**
* 提供统一的用于创建数据库连接的方法
*
* @return 数据库连接对象 Connection
* @throws SQLException 可能抛出的异常
*/
public static Connection getConnection() throws SQLException {
return DriverManager.getConnection(url, username, password);
}
/**
* 提供统一的用于释放数据库连接的方法
*
* @param conn 数据库连接对象
* @param st 执行 sql 语句的对象
* @param rs 获取 sql 返回结果的对象
*/
public static void release(Connection conn, Statement st, ResultSet rs) {
try {
if (conn != null) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
System.err.println(e.getMessage());
}
try {
if (st != null) {
st.close();
}
} catch (SQLException e) {
e.printStackTrace();
System.err.println(e.getMessage());
}
try {
if (rs != null) {
rs.close();
}
} catch (SQLException e) {
e.printStackTrace();
System.err.println(e.getMessage());
}
}
}
通过 JDBCUtils 简化增删改查代码
新增测试
package com.jdbc.test;
import com.jdbc.test.util.JDBCUtils;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
/**
* 测试 JDBC 的插入操作
*
* @author: 南独酌酒 <211425401@126.com>
* @date: 2020/9/22 20:45
*/
public class JDBCTestInsert {
public static void main(String[] args) {
Connection conn = null;
Statement st = null;
ResultSet rs = null;
try {
conn = JDBCUtils.getConnection();
st = conn.createStatement();
String sql = "INSERT INTO jdbctest(`id`,`username`,`password`,`email`,`birthday`)" +
"VALUES(4, '小龙', '123456', 'xllzs@qq.com', '2020-09-22')";
int result = st.executeUpdate(sql);
if (result > 0) {
System.out.println("新增成功");
} else {
System.out.println("新增失败");
}
} catch (Exception e) {
e.printStackTrace();
System.err.println(e.getMessage());
} finally {
JDBCUtils.release(conn, st, rs);
}
}
}
修改测试
package com.jdbc.test;
import com.jdbc.test.util.JDBCUtils;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
/**
* @author: 南独酌酒 <211425401@126.com>
* @date: 2020/9/22 20:51
*/
public class JDBCTestUpdate {
public static void main(String[] args) {
Connection conn = null;
Statement st = null;
ResultSet rs = null;
try {
conn = JDBCUtils.getConnection();
st = conn.createStatement();
String sql = "UPDATE jdbctest SET username = 'zhangsan',`password` = '666666' WHERE id = 1";
int result = st.executeUpdate(sql);
if (result > 0) {
System.out.println("更新成功");
} else {
System.out.println("更新失败");
}
} catch (Exception e) {
e.printStackTrace();
System.err.println(e.getMessage());
} finally {
JDBCUtils.release(conn, st, rs);
}
}
}
删除测试
package com.jdbc.test;
import com.jdbc.test.util.JDBCUtils;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
/**
* @author: 南独酌酒 <211425401@126.com>
* @date: 2020/9/22 20:53
*/
public class JDBCTestDelete {
public static void main(String[] args) {
Connection conn = null;
Statement st = null;
ResultSet rs = null;
try {
conn = JDBCUtils.getConnection();
st = conn.createStatement();
String sql = "DELETE FROM jdbctest WHERE id = 1";
int result = st.executeUpdate(sql);
if (result > 0) {
System.out.println("删除成功");
} else {
System.out.println("删除失败");
}
} catch (Exception e) {
e.printStackTrace();
System.err.println(e.getMessage());
} finally {
JDBCUtils.release(conn, st, rs);
}
}
}
查询测试
package com.jdbc.test;
import com.jdbc.test.util.JDBCUtils;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
/**
* @author: 南独酌酒 <211425401@126.com>
* @date: 2020/9/22 20:54
*/
public class JDBCTestSelect {
public static void main(String[] args) {
Connection conn = null;
Statement st = null;
ResultSet rs = null;
try {
conn = JDBCUtils.getConnection();
st = conn.createStatement();
String sql = "select username from jdbctest WHERE id = 4";
rs = st.executeQuery(sql);
while (rs.next()) {
System.out.println("查询的名称为:" + rs.getString("username"));
}
} catch (Exception e) {
e.printStackTrace();
System.err.println(e.getMessage());
} finally {
JDBCUtils.release(conn, st, rs);
}
}
}