JDBC基础篇(MYSQL)——PreparedStatement执行DML、DQL等
注意:其中的JdbcUtil是我自定义的连接工具类:代码例子链接:
package day03.prepare;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import util.JdbcUtil;
/**
* 关于preparedStatement的案例
* 因为PreparedStatement是继承自statement的;
* 同样preparedStatement也可以执行statement中的方法,那些直接拼接,或者直接输入值的
* 但是这样预编译就没有作用了
*
*
* @author mzy
*
*/
public class Demo01 {
public static void main(String[] args) {
// insert();
// update();
// delete();
select();
}
private static void select() {
PreparedStatement pstmt = null;
Connection conn = null;
ResultSet rs = null;
// 准备sql
String sql = "select * from student where id = ?";
try {
// 获取连接
conn = JdbcUtil.getConnection();
pstmt = conn.prepareStatement(sql); // 预编译的作用就是权限和sql语法的检查
pstmt.setInt(1, 10); // id
rs = pstmt.executeQuery();
while(rs.next()) {
int id = rs.getInt("id");
String name = rs.getString("name");
int age = rs.getInt("age");
System.out.println(id+", "+name+", "+age);
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
JdbcUtil.close(rs, pstmt, conn); // 关闭Statement的,也支持关闭PreparedStatement
}
}
private static void delete() {
// 同 update、insert
}
private static void update() {
PreparedStatement pstmt = null;
Connection conn = null;
// 准备sql
/*
* MySQLSyntaxErrorException
* String sql = "update ? set name = '乘成' where id = ?";
*
* 注意:在预编译的时候,只允许用 ? 占位的地方为参数值(即:等号后面的内容等)
* 不能是表名或者其他关键字,不然就会出现:MySQLSyntaxErrorException异常
* 此异常就是代表sql语句有错,在预编译的时候抛出(预编译的作用就是检测语法和权限)
* 理解了预编译的检测语法作用,就知道该传入什么样的参数了。
*/
String sql = "update student set name = '乘成' where id = ?";
try {
// 获取连接
conn = JdbcUtil.getConnection();
// 是connection去prepare一个Statement 给我们的PreparedStatement
// 和我们的statement不同,这个prepare的时候是预编译,就要把sql传进去了
// 其中的? 作为占位符
pstmt = conn.prepareStatement(sql); // 预编译的作用就是权限和sql语法的检查
// 在预编译之后,需要执行之前给参数赋值,放在pstmt中
/*
* 参数一:位置(从1开始)
* 参数二:具体的参数值
*/
pstmt.setInt(1, 2); // id
// 传入参数之后,再进行执行
int count = pstmt.executeUpdate();
System.out.println(count+"行受影响");
} catch (SQLException e) {
e.printStackTrace();
} finally {
JdbcUtil.close(pstmt, conn); // 关闭Statement的,也支持关闭PreparedStatement
// 因为 Statement是 PreparedStatement的子类
}
}
private static void insert() {
PreparedStatement pstmt = null;
Connection conn = null;
// 准备sql
String sql = "insert into student value(?, ?, ?)";
try {
// 获取连接
conn = JdbcUtil.getConnection();
// 是connection去prepare一个Statement 给我们的PreparedStatement
// 和我们的statement不同,这个prepare的时候是预编译,就要把sql传进去了
// 其中的? 作为占位符
pstmt = conn.prepareStatement(sql); // 预编译的作用就是权限和sql语法的检查
// 在预编译之后,需要执行之前给参数赋值,放在pstmt中
/*
* 参数一:位置(从1开始)
* 参数二:具体的参数值
*/
pstmt.setInt(1, 10); // id
pstmt.setString(2, "陈六"); // name
pstmt.setInt(3, 20); // age
// 传入参数之后,再进行执行
int count = pstmt.executeUpdate();
System.out.println(count+"行受影响");
} catch (SQLException e) {
e.printStackTrace();
} finally {
JdbcUtil.close(pstmt, conn); // 关闭Statement的,也支持关闭PreparedStatement
// 因为 Statement是 PreparedStatement的子类
}
}
}
JDBC基础篇(MYSQL)——PreparedStatement执行DML、DQL等的更多相关文章
- JDBC基础篇(MYSQL)——使用statement执行DML语句(insert/update/delete)
注意:其中的JdbcUtil是我自定义的连接工具类:代码例子链接: package day02_statement; import java.sql.Connection; import java.s ...
- [MySQL实战-Mysql基础篇]-mysql架构
1.基本组成 下面是mysql的基本架构示意图 图一 图二 我们可以从图上看出,mysql大体分为两个部分,一个是server层,另一个是引擎层. server层中包含了连接器.查询缓存.分析器.优 ...
- [MySQL实战-Mysql基础篇]-mysql的日志
参考文章: https://www.cnblogs.com/f-ck-need-u/archive/2018/05/08/9010872.html https://dev.mysql.com/doc/ ...
- JDBC基础篇(MYSQL)——使用statement执行DQL语句(select)
注意:其中的JdbcUtil是我自定义的连接工具类:代码例子链接: package day02_statement; import java.sql.Connection; import java.s ...
- JDBC基础篇(MYSQL)——通过JDBC连接数据库的三种方式
package day01_jdbc; import java.sql.Connection; import java.sql.Driver; import java.sql.DriverManage ...
- JDBC基础篇(MYSQL)——使用CallabeStatement调用存储过程
注意:其中的JdbcUtil是我自定义的连接工具类:代码例子链接: package day04_callable; import java.sql.CallableStatement; import ...
- JDBC基础篇(MYSQL)——自定义JDBCUtil工具类
package util; import java.io.File; import java.io.InputStream; import java.sql.Connection; import ja ...
- jdbc基础 (一) MySQL的简单使用
前段时间学习了jdbc,正好利用这几篇文章总结一下. JDBC 可做三件事:与数据库建立连接.发送操作数据库的语句并处理结果. 而程序首先要做的就是加载数据库驱动,这里我使用的是mysql: Stri ...
- 重新整理 mysql 基础篇————— mysql 事务[三]
前言 简单整理一下事务. 正文 事务有四大特性: 1.原子性(atomicity) 一个事务必须被视为一个不可分割的最小单元. 2.一致性(consistency) 数据库总是从一个一致性的状态转换到 ...
随机推荐
- lucene Hello World
一个lucene创建索引和查找索引的样例: 创建索引: public class Indexer { private IndexWriter indexWriter; /** * 构造器实例化inde ...
- Android系统编程入门系列之界面Activity响应丝滑的传统动画
上篇文章介绍了应用程序内对用户操作响应的相关方法位置,简单的响应逻辑可以是从一个界面Activity跳转到另一个界面Activity,也可以是某些视图View的相对变化.然而不管是启动一个界面执行新界 ...
- Oracle19c 如何用rman duplicate 克隆一个数据库。(Backup-Based, achive log)
Oracle19c 如何用rman duplicate 克隆一个数据库.(Backup-Based, achive log) 首先克隆有两种方法,一种是Backup-Based,一种是Active方式 ...
- Error:Connection activation failed: No suitable device found for this connection 问题最新解决方案
虽然网上有很多关于这个问题的解决方案,但是我还是决定自己再次重复写一下这个解决的方案,重在更新知识和了解VMware workstation 15新功能. 在使用VMware workstation克 ...
- vue tab实现右定位
呈现效果 利用v-if进行判断,登页面完全加载完毕后,显示tab页, 利用name标签,实现选择哪个tab <template> <el-tabs v-if="displa ...
- [考试总结]noip模拟19
连挂3场 \(\color{green}{\huge{\text{菜}}}\) 真 . 挂分王 ... 没什么好说的了,菜就是了. \(T1\) 一波手推想到了性质 \(1\),然后因为数组原因挂成比 ...
- 一文说清OpenCL框架
背景 Read the fucking official documents! --By 鲁迅 A picture is worth a thousand words. --By 高尔基 说明: 对不 ...
- list实现从大到小排序
public static void main(String[] args) { List<Integer> list=new ArrayList<Integer>(); // ...
- 🔥 LeetCode 热题 HOT 100(31-40)
75. 颜色分类 思路:将 2 往后放,0 往前放,剩余的1自然就放好了. 使用双指针:left.right 分别指向待插入的 0 和 2 的位置,初始 left 指向数组头,right 指向数组尾部 ...
- Windows 系统安装 git基础小白的简单操作包含基本输入命令
首先 去官网下载git应用 https://git-scm.com/downloads 点击前往 安装的操作也比较简单,一直点击下一步 安装完成之后 在空白桌面点击是否有 Git Gui ...