JDBC中PreparedStatement接口的使用

简介:   在《java使用JDBC连接MySql数据库》中说明了JDBC链接数据库的基本方式,其中执行SQL语句使用的是Statement接口,这里介绍一个更好用的接口,PreparedStantment接口。PreparedStatement是什么?public interface PreparedStatement extends Statement使用方法:

  在《java使用JDBC连接MySql数据库》中说明了JDBC链接数据库的基本方式,其中执行SQL语句使用的是Statement接口,这里介绍一个更好用的接口,PreparedStantment接口。

PreparedStatement是什么?

public interface PreparedStatement extends Statement

使用方法:

Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection(URL, USERNAME, PASSWORD);
String sql = "insert into person(name,age,description)values(?,?,?)";
PreparedStatement ps = conn.prepareStatement(sql);
//设置占位符对应的值,问号是为占位符,有几个问号就代表要插入几个列,这样看来sql代码就比较简洁。
ps.setString(1, p.getName());
ps.setInt(2, p.getAge());
ps.setString(3, p.getDescription());

ps.executeUpdate();

ps.close();
conn.close();

相对于Statement,PreparedStatement的特点是:参数化查询;

优点是什么?

1.提高代码的可读性

SELECT name FROM table1 WHERE age=?
ps.setString(1, "小明");

?:占位符

2.提高性能

  使用 PreparedStatement 最重要的一点好处是它拥有更佳的性能优势,SQL语句会预编译在数据库系统中。执行计划同样会被缓存起来,它允许数据库做参数化查询。使用预处理语句比普通的查询更快,因为它做的工作更少(数据库对SQL语句的分析,编译,优化已经在第一次查询前完成了)。为了减少数据库的负载,生产环境中的JDBC代码你应该总是使用PreparedStatement 。值得注意的一点是:为了获得性能上的优势,应该使用参数化sql查询而不是字符串追加的方式

3.防止SQL注入式攻击

什么是SQL注入?链接

  在使用参数化查询的情况下,数据库系统(eg:MySQL)不会将参数的内容视为SQL指令的一部分来处理,而是在数据库完成SQL指令的编译后,才套用参数运行,因此就算参数中含有破坏性的指令,也不会被数据库所运行

参考资料


1.MySQL数据库学习笔记(九)—-JDBC的ResultSet接口(查询操作)、PreparedStatement接口重构增删改查(含SQL注入的解释): 链接

2.SQL注入攻击 : 链接

3.JDBC为什么要使用PreparedStatement而不是Statement:链接

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
目录
相关文章
|
SQL 存储 Java
JDBC Statement:执行 SQL 语句的重要接口
在Java应用程序中,与数据库进行交互是一项常见的任务。为了执行数据库操作,我们需要使用JDBC(Java Database Connectivity)来建立与数据库的连接并执行SQL语句。Statement接口是JDBC中的一个重要接口,它用于执行SQL语句并与数据库进行交互。本文将详细介绍Statement接口的使用,包括如何创建Statement对象、执行SQL语句、处理结果等内容。
544 0
|
SQL Java 数据库连接
jdbc应用开发接口流程是怎么样的
jdbc应用开发接口流程是怎么样的
|
Java 数据库连接 数据库
JDBC之Statement与PreparedStatement操作数据库对比
JDBC之Statement与PreparedStatement操作数据库对比
137 0
|
SQL Java 关系型数据库
Java与数据库连接技术JDBC关键核心之PreparedStatement以及SQL注入演示解决和原理
Java与数据库连接技术JDBC关键核心之PreparedStatement以及SQL注入演示解决和原理
171 0
|
SQL 流计算 API
实时计算 Flink版产品使用合集之ClickHouse-JDBC 写入数据时,发现写入的目标表名称与 PreparedStatement 中 SQL 的表名不一致如何解决
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
258 0
|
SQL 缓存 Java
JDBC中PreparedStatement常用操作实践
JDBC中PreparedStatement常用操作实践
632 1
|
SQL Java 关系型数据库
JDBC PreparedStatement 字段值为null导致TBase带宽飙升的案例分析
JDBC PreparedStatement 字段值为null导致TBase带宽飙升的案例分析
383 0
|
SQL 存储 Java
JDBC技术【封装JDBC工具类、Statement的使用、PreparedStatement的使用(重点)、ResultSet的使用】(二)-全面详解(学习总结---从入门到深化)
JDBC技术【封装JDBC工具类、Statement的使用、PreparedStatement的使用(重点)、ResultSet的使用】(二)-全面详解(学习总结---从入门到深化)
1068 0
|
SQL Java 关系型数据库
JDBC(常用类与接口、实现数据库的增删查改)
1.Connection接口常用方法、2.DriverMange类、3.Statement接口,4.实现表的数据更新(增、改、删),5.实现数据查找(ResultSet接口),6.PreparedStatement 数据更新
324 0
JDBC(常用类与接口、实现数据库的增删查改)
|
SQL Java 大数据
关于数据仓库的Hive的Hive架构的用户接口的JDBC/ODBC
随着大数据技术的不断发展,数据仓库成为了企业中不可或缺的一部分。而Hive作为一种开源的数据仓库系统,因其易于使用和高效处理等特点,成为了许多企业的首选。然而,对于普通用户来说,直接使用Hive的命令行工具进行操作并不方便。因此,开发者社区中涌现出了大量的Hive GUI工具,其中最为流行的就是Web GUI工具。
527 1