zoukankan      html  css  js  c++  java
  • 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的子类
    		}
    	}
    }
    


  • 相关阅读:
    webstorm快捷键大全
    Js的reduce()方法
    利用 c# linq 实现多个数据库的联合查询
    微信小程序支付接入注意点
    ubuntu所有php扩展php-7.0扩展列表
    ubuntu 16.04 php 安装curl方法
    Ubuntu下配置Apache开启HTTPS
    Mac下如何用SSH连接远程Linux服务器及Linux一些常用操作命令,更新中.....
    Mac下如何用SSH连接远程Linux服务器
    C#的dapper使用
  • 原文地址:https://www.cnblogs.com/mzywucai/p/11053479.html
Copyright © 2011-2022 走看看