PreparedStatement预编译对象

PreparedStatement

我们知道PreparedStatement对象是从Statement对象继承而来的,同样拥有executeQuery(),executeUpdate(),execute()方法,但是包含于PreparedStatement对象中的SQL语句可以使用IN参数(传入PreparedStatement的SQL语句的变量),因此可以动态的向SQL命令传入不同的参数值,从而提高程序的效率和灵活性。

  • 这里我们说一下上面提到的三个方法:

executeQuery():这个方法主要是用来执行查询命令,返回一个ResultSet对象
executeUpdate():这个主要是用来增加、删除及修改记录操作,返回一个int整型值,这个整型是被更新的行数
execute():主要是用来执行一般的SQL命令,包括增删改查以及数据的定义,返回一个布尔值,它代表着是否返回一个查询结果集ResultSet对象

  • 预编译,所谓的预编译就是在创建语句对象的时候,将SQL执行语句一起编译,然后写入缓存,只保留参数动态输入。

  • 1、创建对象


String URL="jdbc:mysql://localhost/course_system";
Connection connection=DriverManager.getConnection(URL);
String sql="select * from course where name=?";
PreparedStatement preparedStatement=connection.prepareStatement(sql);

虽然PreparedStatementStatement对象所产生的结果都是相同的,但是执行不同,使用Statement对象,每次执行时候,数据库都要重新编译、执行一遍SQL命令;但是使用PreparedStatement对象,编译程序的时候,就对SQL语句进行了编译,然后写入缓存,只保留动态参数。因此呢使用后者可以提高执行效率。因而被普遍使用。

  • 2、传递参数

    		String sql="insert into student values(?,?,?)";
    
            preparedStatement=connection.prepareStatement(sql);
            preparedStatement.setInt(1,stu.getSn());
            preparedStatement.setString(2,stu.getName());
            preparedStatement.setInt(3,stu.getClassid())

?代表一个占位符,每个问号的值必须通过适当的setXXX进行填入,其中XXX的类型是与该参数对象的类型。这个XXX是Java类型。

  • 3、批处理SQL语句
    利用for循环

版权声明:本文为qq_44723296原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。