注意:其中的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等的更多相关文章

  1. JDBC基础篇(MYSQL)——使用statement执行DML语句(insert/update/delete)

    注意:其中的JdbcUtil是我自定义的连接工具类:代码例子链接: package day02_statement; import java.sql.Connection; import java.s ...

  2. [MySQL实战-Mysql基础篇]-mysql架构

    1.基本组成 下面是mysql的基本架构示意图  图一 图二 我们可以从图上看出,mysql大体分为两个部分,一个是server层,另一个是引擎层. server层中包含了连接器.查询缓存.分析器.优 ...

  3. [MySQL实战-Mysql基础篇]-mysql的日志

    参考文章: https://www.cnblogs.com/f-ck-need-u/archive/2018/05/08/9010872.html https://dev.mysql.com/doc/ ...

  4. JDBC基础篇(MYSQL)——使用statement执行DQL语句(select)

    注意:其中的JdbcUtil是我自定义的连接工具类:代码例子链接: package day02_statement; import java.sql.Connection; import java.s ...

  5. JDBC基础篇(MYSQL)——通过JDBC连接数据库的三种方式

    package day01_jdbc; import java.sql.Connection; import java.sql.Driver; import java.sql.DriverManage ...

  6. JDBC基础篇(MYSQL)——使用CallabeStatement调用存储过程

    注意:其中的JdbcUtil是我自定义的连接工具类:代码例子链接: package day04_callable; import java.sql.CallableStatement; import ...

  7. JDBC基础篇(MYSQL)——自定义JDBCUtil工具类

    package util; import java.io.File; import java.io.InputStream; import java.sql.Connection; import ja ...

  8. jdbc基础 (一) MySQL的简单使用

    前段时间学习了jdbc,正好利用这几篇文章总结一下. JDBC 可做三件事:与数据库建立连接.发送操作数据库的语句并处理结果. 而程序首先要做的就是加载数据库驱动,这里我使用的是mysql: Stri ...

  9. 重新整理 mysql 基础篇————— mysql 事务[三]

    前言 简单整理一下事务. 正文 事务有四大特性: 1.原子性(atomicity) 一个事务必须被视为一个不可分割的最小单元. 2.一致性(consistency) 数据库总是从一个一致性的状态转换到 ...

随机推荐

  1. 一个很多人不知道的SpringBoot小技能!!

    大家好,我是冰河~~ 最近,发现很多小伙伴在修改了SpringBoot的配置文件后,都要重新编译整个项目,极大的浪费了开发时间.我身边就有很多小伙伴一直是这样做的.那么,有没有什么方式能够修改配置文件 ...

  2. etcd学习(4)-centos7中部署etcd

    etcd的搭建 前言 单机 集群 创建etcd配置文件 更新etcd系统默认配置 启动 配置ETCD为启动服务 测试下 参考 etcd的搭建 前言 这里记录下如何搭建etcd 单机 在etcd的rel ...

  3. 第四篇 -- Go语言string转其他类型

    1. string转int // 法1:string转int num_str := "1234567" /* ParseInt():查看文档https://studygolang. ...

  4. 微信小程序账号注册

    想要开发微信小程序,先注册账号申请APPID. 第一步:百度搜索"微信公众平台" 第二步:立即注册 进入注册页面 区别: 订阅号: 订阅号在文件夹里,订阅号消息 一天只能推送一次, ...

  5. TCP协议系列之一一什么是TCP协议,TCP的三次握手,为什么不是2次或4次?

    CP 为什么三次握手而不是两次握手(正解版) https://blog.csdn.net/lengxiao1993/article/details/82771768 自己理解说明一下: 比如说有一条管 ...

  6. .NET 6 预览版 5 发布

    很高兴.NET 6 预览版5终于跟大家见面了.我们现在正处于.NET 6 的后半部分,开始整合一些重要的功能. 例如.NET SDK 工作负载,它是我们.NET 统一愿景的基础,可以支持更多类型的应用 ...

  7. Laravel Ignition 2.5.1 代码执行漏洞(CVE-2021-3129)

    影响范围 Laravel 框架 < 8.4.3 facade ignition 组件 < 2.5.2 poc git clone https://github.com/simonlee-h ...

  8. 创建型-单例模式 SingletonPattern

    单例模式 Singleton 保证一个类只有一个实例的实现方法 给其他类提供一个全局的访问点. 由自己创建自己的唯一实例 实现 实现方法分为饿汉式(线程安全).懒汉式(线程不安全).懒汉式(lock+ ...

  9. JavaScript实现,判断一个点是否在多边形内(简直nice,希望能帮到你)

    //定义点的结构体 function point(){ this.x=0; this.y=0; } //计算一个点是否在多边形里,参数:点,多边形数组 function PointInPoly(pt, ...

  10. PCE | 华中农大郭亮团队蛋白质组学揭示油菜内源氧化还原修饰介导盐胁迫响应

    蛋白质翻译后修饰(PTM)在控制植物生长发育以及逆境适应方面发挥着重要的作用.发生在半胱氨酸巯基的亚磺酰化修饰(R-SOH)是一种可逆的氧化修饰类型,可以通过与其他修饰形态形成二硫键的形式来保护蛋白不 ...