博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JDBC基础篇(MYSQL)——PreparedStatement执行DML、DQL等
阅读量:5103 次
发布时间:2019-06-13

本文共 3158 字,大约阅读时间需要 10 分钟。

微笑注意:其中的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的子类		}	}}

转载于:https://www.cnblogs.com/mzywucai/p/11053479.html

你可能感兴趣的文章
关于static的使用
查看>>
linux basename学习
查看>>
作业2(4)
查看>>
C#: switch语句的重构『网摘』
查看>>
12.9——周总
查看>>
Windows 7 下 PHP 开发环境搭建(手动)
查看>>
在腾讯云服务器上实现java web项目部署
查看>>
linux文档常见后缀名
查看>>
C++关键字 explicit
查看>>
为什么要使用自增ID作为主键
查看>>
C#—异步编程
查看>>
Hibernate查询
查看>>
dialog组件
查看>>
Python(2.7.6) 迭代器
查看>>
Spring IOP 面向切面编程
查看>>
FreeBSD11配置local_unbound做dns缓存和转发
查看>>
JS面向对象
查看>>
责任链模式
查看>>
IE和火狐CSS透明层兼容写法
查看>>
名称空间与作用域
查看>>