注意:其中的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. Java的锁升级策略

    什么是锁? java中,synchronized永远都是锁定的一个对象,那么jvm是怎么判断一个对象是被锁定的呢. java的对象内存分布 Java的对象由对象头,对象体和填充空间(Padding)组 ...

  2. 微信小程序云开发-云函数-创建云函数

    一.检查云函数环境 检查云函数环境时候,鼠标右键点击查看当前环境.如果存在多个云开发环境,要确保云函数的当前环境要与app.js中evn的环境值一致. 如果不一致,则鼠标右键切换当前云开发环境.(如果 ...

  3. 以太坊-Win环境下remix环境搭建

    一.node.js环境搭建 有多个安装方法,但是注意npm与node版本相关性较强!以下方案较为简便 1.下载网址 http://nodejs.cn/download/ 2.下载window 64位 ...

  4. 第二十五篇 -- C++宝典中的图书管理系统

    此篇文章是基于C++宝典写的图书管理系统,本人对其中的部分做了相应修改,并且以现有格式替代原有格式,使程序更加清晰明了.此程序运行在VS2017上. 系统设计 图书管理系统分为四个模块:图书管理模块. ...

  5. Linux Shell 学习笔记 00

    1.Bash = Bourne Again SHell 2.终端提示符: #普通用户 username@hostname$ #管理员用户 root@hostname# 3.shell脚本通常是一个以s ...

  6. js中==和===的区别以及总结

    js中==和===的区别以及总结 学习js时我们会遇到 == 和 === 两种符号,现做总结如下 两种符号的定义 "==" 叫做相等运算符 "===" 叫做严格 ...

  7. 构建前端第13篇之---VUE的method:{}的括号未括到方法导致 _vm.linkProps is not a function

  8. 研究java ResultSet结果集

    java的结果集,实现类D:\storage\respository\com\sinosoft\local\oracle\1.0\oracle-1.0.jar!\oracle\jdbc\driver\ ...

  9. 京东购物小程序 | Taro3 项目分包实践

    背景 京东购物小程序作为京东小程序业务流量的主要入口,承载着许多的活动和页面,而很多的活动在小程序开展的同时,也会在京东 APP 端进行同步的 H5 端页面的投放.这时候,一个相同的活动,需要同时开发 ...

  10. openssl not found 离线安装的openssl问题

    离线安装问题 正常我们在Linux中按照 nginx的openssl依赖都是通过 yum来安装的,但是由于一些特殊的服务器公司不让服务器连接互联网,所以就导致我们必须通过离线方式来进行安装,但是我们离 ...