好久没写过JDBC,也有些记不清了,在此重新梳理一下
比如操作表test_message
CREATE TABLE `test_message` (
`message_id` int(10) unsigned NOT NULL AUTO_INCREMENT PRIMARY KEY,
`content` varchar(100) DEFAULT NULL
)
查询
import java.sql.*;
public class Main {
public static void main(String[] args) {
// 初始化
Connection conn = null;
ResultSet rs = null;
PreparedStatement prst = null;
try {
// 加载数据库驱动,完成后会自动执行驱动中的static代码,生成DriverManager对象
Class.forName("com.mysql.cj.jdbc.Driver");
// 建立连接
conn = DriverManager.getConnection("jdbc:mysql:///test?serverTimezone=GMT%2B8", "root", "hello");
// 全表查询
String sql = "SELECT * FROM test_message";
// 创建prepareStatement对象
prst = conn.prepareStatement(sql);
// 执行SQL并得到一个封装好的结果集
rs = prst.executeQuery();
// 遍历结果集
while (rs.next()) {
System.out.println("Id: " + rs.getInt("message_id") + "Content: " + rs.getString("content"));
}
// 释放资源
if (rs != null) {
rs.close();
}
if (prst != null) {
prst.close();
}
if (conn != null) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
} finally {
if (rs != null) {
try {
rs.close();
} catch (Exception e) {
e.printStackTrace();
}
conn = null;
}
if (conn != null) {
try {
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
conn = null;
}
if (prst != null) {
try {
prst.close();
} catch (Exception e) {
e.printStackTrace();
}
prst = null;
}
}
}
}
插入数据 SQL语句动态渲染参数
// ?作为占位符
String sql = "INSERT INTO test_message(content) VALUE(?)";
prst = connection.prepareStatement(sql);
// 渲染SQL语句 strString渲染一个String类型 1表示SQL中第一个占位符
prst.setString(1, "Hello,World!");
// 执行SQL
rs = prst.executeUpdate();