“使用PreparedStatement实现通用的增删改操作”的版本间的差异
跳到导航
跳到搜索
Jihongchang(讨论 | 贡献) |
Jihongchang(讨论 | 贡献) |
||
第15行: | 第15行: | ||
'AA', | 'AA', | ||
'2010-03-04'); | '2010-03-04'); | ||
− | </syntaxhighlight> | + | </syntaxhighlight><syntaxhighlight lang="java"> |
+ | import io.github.jihch.util.JDBCUtils; | ||
+ | import org.junit.Test; | ||
+ | |||
+ | import java.io.IOException; | ||
+ | import java.io.InputStream; | ||
+ | import java.sql.*; | ||
+ | import java.text.ParseException; | ||
+ | import java.text.SimpleDateFormat; | ||
+ | import java.util.Properties; | ||
+ | |||
+ | /** | ||
+ | * 使用 PreparedStatement 来替换 Statement,实现对数据表的增删改查操作 | ||
+ | * 增删改;查 | ||
+ | */ | ||
+ | public class PreparedStatementUpdateTest { | ||
+ | |||
+ | @Test | ||
+ | public void testCommonUpdate() { | ||
+ | // String sql = "delete from customers where id = ?"; | ||
+ | // update(sql, 1); | ||
+ | |||
+ | String sql = "update `order` set order_name = ? where order_id = ?"; | ||
+ | update(sql, "DD", 1); | ||
+ | |||
+ | } | ||
+ | |||
+ | //通用的增删改查操作 | ||
+ | public void update(String sql, Object ...args) {//sql 中占位符的个数与可变形参的长度相同 | ||
+ | |||
+ | Connection conn = null; | ||
+ | PreparedStatement ps = null; | ||
+ | |||
+ | try { | ||
+ | //1.获取数据库的连接 | ||
+ | conn = JDBCUtils.getConnection(); | ||
+ | |||
+ | //2.预编译sql语句,返回PreparedStatement的实例 | ||
+ | ps = conn.prepareStatement(sql); | ||
+ | |||
+ | //3.填充占位符 | ||
+ | for (int i = 0; i < args.length; i++) { | ||
+ | ps.setObject(i + 1, args[i]); | ||
+ | } | ||
+ | |||
+ | //4.执行 | ||
+ | ps.execute(); | ||
+ | } catch (Exception e) { | ||
+ | e.printStackTrace(); | ||
+ | } finally { | ||
+ | JDBCUtils.closeResource(conn, ps); | ||
+ | } | ||
+ | |||
+ | } | ||
+ | </syntaxhighlight>https://github.com/jihch/jdbc/blob/main/src/main/java/io/github/jihch/preparedstatement/crud/PreparedStatementUpdateTest.java |
2022年12月16日 (五) 14:11的版本
https://www.bilibili.com/video/BV1eJ411c7rf?p=16
CREATE TABLE `order` (
`order_id` int(11) NOT NULL AUTO_INCREMENT,
`order_name` varchar(45) DEFAULT NULL,
`order_date` date DEFAULT NULL,
PRIMARY KEY (`order_id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4;
INSERT INTO `jdbc_test`.`order`
(`order_name`,
`order_date`)
VALUES
(
'AA',
'2010-03-04');
import io.github.jihch.util.JDBCUtils;
import org.junit.Test;
import java.io.IOException;
import java.io.InputStream;
import java.sql.*;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Properties;
/**
* 使用 PreparedStatement 来替换 Statement,实现对数据表的增删改查操作
* 增删改;查
*/
public class PreparedStatementUpdateTest {
@Test
public void testCommonUpdate() {
// String sql = "delete from customers where id = ?";
// update(sql, 1);
String sql = "update `order` set order_name = ? where order_id = ?";
update(sql, "DD", 1);
}
//通用的增删改查操作
public void update(String sql, Object ...args) {//sql 中占位符的个数与可变形参的长度相同
Connection conn = null;
PreparedStatement ps = null;
try {
//1.获取数据库的连接
conn = JDBCUtils.getConnection();
//2.预编译sql语句,返回PreparedStatement的实例
ps = conn.prepareStatement(sql);
//3.填充占位符
for (int i = 0; i < args.length; i++) {
ps.setObject(i + 1, args[i]);
}
//4.执行
ps.execute();
} catch (Exception e) {
e.printStackTrace();
} finally {
JDBCUtils.closeResource(conn, ps);
}
}