public interface PreparedStatementextends Statement 表示预编译的 SQL 语句的对象。
SQL 语句被预编译并存储在 PreparedStatement
对象中。然后可以使用此对象多次高效地执行该语句。
注:用于设置 IN 参数值的设置方法(setShort
、setString
等等)必须指定与输入参数的已定义 SQL 类型兼容的类型。例如,如果 IN 参数具有 SQL 类型 INTEGER
,那么应该使用 setInt
方法。
如果需要任意参数类型转换,使用 setObject
方法时应该将目标 SQL 类型作为其参数。
1 package com.ayang.jdbc; 2 3 import java.sql.*; 4 5 6 import com.mysql.*; 7 8 public class TestPreparedStatement { 9 10 /** 11 * @param args 12 */ 13 public static void main(String[] args) { 14 if(args.length!=3){ 15 //判断输入参数个数是否错误 16 System.out.println("Parameter Error! Please Input Again!"); 17 System.exit(-1); //系统退出 18 } 19 20 int deptno = 0; //声明变量。在头上呢?还是啥时候用啥时候声明呢?面试时,声明在头上。 21 22 try{ 23 deptno = Integer.parseInt(args[0]); 24 }catch(NumberFormatException e){ 25 System.out.println("参数类型错误,请输入数字"); 26 System.exit(-1); 27 28 } 29 String dname = args[1]; 30 String loc = args[2]; 31 32 Connection conn = null; 33 PreparedStatement pstmt = null; 34 35 try{ 36 //1、注册驱动 37 //new oracle.jdbc.driver.OracleDriver(); 38 Class.forName("oracle.jdbc.driver.OracleDriver"); 39 //2、建立连接 40 conn = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:ORCL","scott", "root"); 41 //3、创建语句 42 pstmt = conn.prepareStatement("insert into dept2 values(?,?,?)"); 43 pstmt.setInt(1, deptno); 44 pstmt.setString(2, dname); 45 pstmt.setString(3, loc); 46 pstmt.executeUpdate(); 47 48 }catch (ClassNotFoundException e) { 49 System.out.println("未正常加载jdbc驱动"); 50 e.printStackTrace(); 51 }catch(SQLException e){ 52 e.printStackTrace(); //log for java 53 54 }finally{ 55 //6、释放资源 56 try { 57 if(pstmt != null){ 58 pstmt.close(); 59 pstmt = null; 60 }if(conn != null){ 61 conn.close(); 62 conn = null; 63 } 64 } catch (SQLException e) { 65 e.printStackTrace(); 66 } 67 68 69 } 70 71 72 73 } 74 75 }
时间: 2024-10-31 09:58:16