mysql preparedstatement 执行存储过程_JDBC基础篇(MYSQL)——PreparedStatement执行DML、DQL等...

smile.gif注意:其中的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的子类

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值