`
linchixiong
  • 浏览: 5936 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

PrepareStatement和Statement学习笔记

阅读更多
PreparedStatement对象不仅包含了SQL语句,而且大多数情况下这个语句已经被预编译过,因而当其执行时,只需DBMS运行SQL语句,而不必先编译。当你需要执行Statement对象多次的时候,PreparedStatement对象将会大大降低运行时间,当然也加快了访问数据库的速度。
这种转换也给你带来很大的便利,不必重复SQL语句的句法,而只需更改其中变量的值,便可重新执行SQL语句。
使用PreparedStatement的时候需要注意哪些参数可以使用setString()赋值
例如:
String sql = "select ? from ?";
conn = DriverManager.getConnection(URL, USER_NAME, PASSWORD);
ps = conn.prepareStatement(sql);
ps.setString(1, "*");//这样写会出错,最后查询结果是空的
ps.setInt(2, 5);
rs = ps.executeQuery();

setString方法的jdk描述如下:Sets the designated parameter to the given Java String value. The driver converts this to an SQL VARCHAR or LONGVARCHAR value (depending on the argument's size relative to the driver's limits on VARCHAR values) when it sends it to the database.

选择PreparedStatement对象与否,在于相同句法的SQL语句是否执行了多次,而且两次之间的差别仅仅是变量的不同。如果仅仅执行了一次的话,它应该和普通的对象毫无差异,体现不出 它预编译的优越性。

补充:

1. 数 据库在执行sql语句的时候如果使用PreparedStatement语句会有一点优势:因为数据库会   PreparedStatement 语句进行预编译,下次执行相同的sql语句时,数据库端不会再进行预编译了,而直接用数据库的缓冲区,提高数据访问的效率(但尽量尽量采用使用?号的方式 传递参数),如果sql语句只执行一次,以后不再复用,则建议采用StatemenStatement不会对sql进行预编译。

2. 另外使用PrepareStatement还有一个好处,不用对传入的字符串进行转义。

3.PreparedStatement 能有效防止Sql注入攻击,速度较快,但失于灵活.

分享到:
评论

相关推荐

    JDBC 学习笔记 JDBC 学习笔记

    **JDBC学习笔记** 在Java开发中,JDBC(Java Database Connectivity)是连接数据库的关键技术。它是Java API,允许Java程序与各种类型的数据库进行交互。本笔记将深入探讨JDBC的核心概念、工作原理以及实际应用。 ...

    JDBC个人学习笔记

    【JDBC学习笔记】 JDBC,全称Java Database Connectivity,是Java编程语言中用来规范客户端程序如何访问数据库的应用程序接口,由Sun Microsystems公司提出。它为程序员提供了标准的API,使得开发者可以使用Java...

    达内jdbc学习笔记

    总的来说,"达内jdbc学习笔记"涵盖了JDBC基础、数据库连接、SQL执行、结果集处理、事务管理和性能优化等多个关键知识点,对Java开发者来说是宝贵的参考资料。通过深入学习和实践,可以熟练地使用Java进行数据库操作...

    JSP学习笔记(三)-----使用JSP处理用户注册和登陆

    ### JSP学习笔记(三)——使用JSP处理用户注册和登录 #### 一、概述 本篇笔记介绍了一个简单的用户注册与登录系统的实现过程,该系统由四个JSP页面构成,分别是`login.jsp`、`test.jsp`、`test2.jsp`以及未给出具体...

    ios学习笔记 --sqllite3

    这篇“iOS学习笔记 --SQLite3”旨在帮助新手掌握如何在iOS应用中使用SQLite3进行数据管理,包括创建数据库、插入数据、查询数据等基本操作。 首先,我们需要了解SQLite3的基本概念。SQLite3是一个嵌入式的关系型...

    java学习详细笔记

    - 使用`Connection.prepareStatement()`方法创建PreparedStatement对象。 - 使用`Connection.prepareCall()`方法创建CallableStatement对象。 4. **执行SQL命令**: - 对于查询,可以使用`executeQuery()`方法。...

    韩顺平j2ee-JDBC与MySQL学习笔记

    `prepareStatement(sql)`用于创建`PreparedStatement`对象,处理预编译的SQL,提高效率并防止SQL注入;`prepareCall(sql)`则用于创建`CallableStatement`对象,用于调用数据库的存储过程。 在实际开发中,我们还会...

    JDBC学习笔记(笔记+包含详细注释的代码)

    **JDBC学习笔记** Java Database Connectivity (JDBC) 是Java平台中用于与各种数据库进行交互的一组接口和类。它是Java SE的一部分,允许Java应用程序连接到数据库,执行SQL语句,处理结果集,并进行事务管理。这篇...

    JDBC 实战教程-尚硅谷学习笔记 2023年

    **JDBC实战教程——尚硅谷学习笔记 2023年** Java Database Connectivity(JDBC)是Java平台中用于与数据库交互的一种标准接口。它由Java API组成,允许Java应用程序连接到各种数据库,执行SQL语句,处理结果集,...

    java学习笔记(javase)

    以下是一些Java学习笔记中的关键知识点,它们涵盖了从基础到进阶的概念。 1. JSP页面中静态包含文件(如HTML文件) 在JSP中,可以通过`<jsp:include>`标签来实现静态包含其他HTML、JSP或XML文件,这样可以提高代码...

    Java4相关课程系列笔记之四JDBC学习笔记.doc

    **Java4相关课程系列笔记之四JDBC学习笔记** JDBC(Java Database Connectivity)是Java语言中用于与各种数据库进行交互的一种标准接口,由Sun Microsystems公司开发并作为Java平台的一部分。JDBC提供了一套API,...

    JDBC学习笔记.txt

    ### JDBC学习笔记知识点详解 #### 一、JDBC概述与选择 JDBC(Java Database Connectivity)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供...

    Jsp链接Mysql+Jsp注册表单(学习笔记).

    PreparedStatement pstmt = conn.prepareStatement("INSERT INTO users (username, password) VALUES (?, ?)"); pstmt.setString(1, username); pstmt.setString(2, password); pstmt.executeUpdate(); ``` 6....

    JDBC-1500行学习笔记,真的超级详细!!!

    - `prepareStatement(String sql)`:创建用于执行预编译SQL语句的PreparedStatement对象。 - **Statement** / **PreparedStatement** / **CallableStatement**:用于执行SQL语句的对象。 - **Statement**:执行...

    JDBC基础-Java学习笔记

    PreparedStatement pstmt = con.prepareStatement("SELECT * FROM users WHERE id = ?"); pstmt.setInt(1, 1); // 设置参数 ResultSet rs = pstmt.executeQuery(); ``` 4. **执行 SQL 语句**: - 使用 `...

    Java后端学习笔记 — JDBC(一)

    【Java后端学习笔记 — JDBC(一)】 在Java后端开发中,JDBC(Java Database Connectivity)扮演着至关重要的角色,它是一个用于连接Java应用程序和数据库的接口标准。本篇笔记将首先介绍JDBC的基本概念,然后讲解...

Global site tag (gtag.js) - Google Analytics