`

PreparedStatement的使用

 
阅读更多
PreparedStatement是什么?

PreparedStatement叫预编译声明!

PreparedStatementStatement的子接口,你可以使用PreparedStatement来替换Statement

李氏代换原则:只要是父类可以出现的地方,子类都可以出现.

PreparedStatement的好处:

防止SQL攻击;

 用户从表单中输入的Sql语句不能直接与我们程序中的sql接触,而是使用?号来赋值.

提高代码的可读性,以可维护性;

使用?号占位,不用写Sql语句中的一系列的单引又引号,+.

提高效率

2 PreparedStatement的使用

 

String sql = “select * from tab_student where s_number=?”;
PreparedStatement pstmt = con.prepareStatement(sql);
pstmt.setString(1, “S_1001”);
ResultSet rs = pstmt.executeQuery();
rs.close();
pstmt.clearParameters();//再次使用时需要把原来的设置清空。
pstmt.setString(1, “S_1002”);
rs = pstmt.executeQuery();

 

 

 

在使用Connection创建PreparedStatement对象时需要给出一个SQL模板,所谓SQL模板就是有“?”的SQL语句,其中“?”就是参数。

在得到PreparedStatement对象后,调用它的setXXX()方法为“?”赋值,这样就可以得到把模板变成一条完整的SQL语句,然后再调用PreparedStatement对象的executeQuery()方法获取ResultSet对象。

注意PreparedStatement对象独有的executeQuery()方法是没有参数的,而StatementexecuteQuery()是需要参数(SQL语句)的。因为在创建PreparedStatement对象时已经让它与一条SQL模板绑定在一起了,所以在调用它的executeQuery()executeUpdate()方法时就不再需要参数了。

PreparedStatement最大的好处就是在于重复使用同一模板,给予其不同的参数来重复的使用它。这才是真正提高效率的原因。

<!--EndFragment--><!--EndFragment--><!--EndFragment-->

分享到:
评论

相关推荐

    练习3:使用PreparedStatement插入宠物信息.zip

    此外,由于PreparedStatement使用占位符,它能自动处理特殊字符,从而避免了SQL注入攻击的可能性。 在执行插入操作时,我们通常遵循以下步骤: 1. **连接数据库**:使用`DriverManager.getConnection()`方法建立与...

    如何获得PreparedStatement最终执行的sql语句

    当我们处理大量重复的SQL操作时,使用`PreparedStatement`可以避免SQL注入等问题,同时提升性能。这篇博客可能是探讨如何在实际运行中获取`PreparedStatement`最终执行的SQL语句,这对于调试和分析数据库操作非常有...

    PreparedStatement

    jdbc2.0版 PreparedStatement接口的用法

    Statement和PreparedStatement之间的区别

    PreparedStatement对象相比Statement对象具有更多的优点,因此在实际开发中,建议使用PreparedStatement对象来代替Statement对象。 知识点: 1. Statement对象和PreparedStatement对象的区别 2. PreparedStatement...

    PreparedStatement详细用法

    在Java应用程序与数据库交互的过程中,`PreparedStatement`的使用能够显著提升应用程序的性能和安全性。 #### 二、PreparedStatement的优势 **1. 性能提升** - **预编译机制**:`PreparedStatement`允许将SQL...

    connection 和 preparedstatement 的关闭问题

    本文将详细介绍`Connection`和`PreparedStatement`的使用时机与关闭策略,帮助开发者更好地理解和掌握这两者的使用方法。 #### Connection(连接) - **定义**:`Connection`接口是Java中所有数据库操作的基础。它...

    PreparedStatement 详细用法

    本文将详细介绍`PreparedStatement`的使用方法,主要面向Java服务器页面(JSP)的初学者。 #### 二、准备工作 为了能够使用`PreparedStatement`,首先需要确保已经安装了MySQL数据库,并且在项目中引入了MySQL ...

    MySql练习3:使用PreparedStatement插入宠物信息.zip

    MySql练习3:使用PreparedStatement插入宠物信息.zip MySql练习3:使用PreparedStatement插入宠物信息.zip MySql练习3:使用PreparedStatement插入宠物信息.zip

    JDBC基础教程之PreparedStatement.doc

    2. **准备SQL语句**:接着,使用`Connection`对象的`prepareStatement(String sql)`方法创建一个`PreparedStatement`对象,其中`sql`参数是包含占位符的SQL语句。 ```java Connection con = DriverManager.get...

    关于PreparedStatement插入Date类型值的方法.txt

    在Java编程语言中,使用`PreparedStatement`来执行SQL语句是一种常见的操作数据库的方式。这种方式不仅可以提高程序的性能,还可以有效地防止SQL注入攻击。当我们在应用程序中需要向数据库中插入日期(`Date`类型)...

    PreparedStatement和Statement

    这个项目可能包含了使用`PreparedStatement`和`Statement`的例子,通过分析这些代码,你可以更好地理解两者的应用和区别。 总结,`PreparedStatement`和`Statement`在Java数据库操作中各有优势。在追求性能、安全性...

    PreparedStatement 向数据库插入时间方法

    为了确保SQL查询的安全性和效率,通常会使用`PreparedStatement`来执行这样的操作。然而,在处理日期和时间类型的数据时,可能会遇到一些问题。例如,当我们尝试使用`java.util.Date`对象将日期传递给`...

    04-完整JdbcUtils工具类.pdf

    4. PreparedStatement使用:PreparedStatement是JDBC提供的预编译SQL语句接口,可以用来执行预编译的SQL语句。它支持SQL语句中的参数化,并可以防止SQL注入。在JdbcUtils类中,PreparedStatement被用于执行插入、...

    java中PreparedStatement和Statement的区别

    使用 PreparedStatement 可以使代码变得更加简洁和易于维护,而不是使用 Statement 直接拼接 SQL 语句。例如: ```java stmt.executeUpdate("insert into tb_name (col1,col2,col2,col4) values ('"+var1+"','"+var2...

    JDBC入门中文文档

    4. **执行SQL**: 对Statement使用`stmt.executeUpdate(sql)`执行DML(INSERT, UPDATE, DELETE),对PreparedStatement使用`pstmt.executeUpdate()`或`pstmt.executeQuery()`执行查询。 5. **处理结果**: 对于查询,...

    JDBC入门案例详解源代码压缩包

    - 预编译的PreparedStatement使用 - 处理批处理操作 - 错误处理和异常处理 通过研究这些示例,你可以了解如何在实际项目中应用JDBC。注意,由于不同数据库可能有不同的API使用习惯,因此在使用前需确认驱动兼容性及...

    JDBC实现三个板块的增删查改

    使用`Connection`对象创建`Statement`或`PreparedStatement`。`Statement`用于执行静态SQL语句,而`PreparedStatement`允许预编译的SQL语句,提供更好的性能,并且可以防止SQL注入。 ```java Connection conn = ...

    javaSE面试题

    - **代码可读性**:PreparedStatement使用占位符"?",使SQL与参数分离,便于维护和避免SQL注入。 3. **ResultSet遍历** - 结果集通过`while(rs.next())`循环遍历,使用`rs.getString()`和`rs.getInt()`等方法获取...

Global site tag (gtag.js) - Google Analytics