Java PreparedStatement用法详解

 更新时间:2021年08月13日 08:42:36   作者:繁星*墨菲  
这篇文章主要介绍了Java PreparedStatement用法详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下

PreparedStatement介绍

  • 可以通过调用 Connection 对象的 prepareStatement(String sql) 方法获取
  • PreparedStatement 对象PreparedStatement 接口是 Statement 的子接口,它表示一条预编译过的 SQL 语句
  • PreparedStatement 对象所代表的 SQL 语句中的参数用问号(?)来表示(?在SQL中表示占位符),调用 PreparedStatement 对象的 setXxx() 方法来设置这些参数. setXxx() 方法有两个参数,第一个参数是要设置的 SQL 语句中的参数的索引(从 1 开始),第二个是设置的 SQL 语句中的参数的值

在这里插入图片描述

PreparedStatement vs Statement

  • 代码的可读性和可维护性。
  • PreparedStatement 能最大可能提高性能:
    • DBServer会对预编译语句提供性能优化。因为预编译语句有可能被重复调用,所以语句在被DBServer的编译器编译后的执行代码被缓存下来,那么下次调用时只要是相同的预编译语句就不需要编译,只要将参数直接传入编译过的语句执行代码中就会得到执行。
    • 在statement语句中,即使是相同操作但因为数据内容不一样,所以整个语句本身不能匹配,没有缓存语句的意义.事实是没有数据库会对普通语句编译后的执行代码缓存。这样每执行一次都要对传入的语句编译一次。
    • (语法检查,语义检查,翻译成二进制命令,缓存)
  • PreparedStatement 可以防止 SQL 注入

插入案例

PreparedStatement常用的方法:

void setObject(int parameterIndex, Object x, int targetSqlType)

在这里插入图片描述

parameterIndex the first parameter is 1, the second is 2, …占位符参数索引是从1开始的
其余也是如此:

void setInt(int parameterIndex, int x)
void setLong(int parameterIndex, long x)
void setString(int parameterIndex, String x)
void setBlob (int parameterIndex, Blob x)
void setDate(int parameterIndex, java.sql.Date x, Calendar cal)

在这里插入图片描述

执行操作:

在这里插入图片描述

package com.atmf;

import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Properties;

import org.junit.Test;

public class SumUP {
	@Test
	public void getConnection() {
		Connection con = null;
		PreparedStatement ps = null;
		try {
			//1,加载配置文件
			InputStream is = ClassLoader.getSystemClassLoader().getResourceAsStream("jdbc.properties");
			Properties pr = new Properties();
			pr.load(is);
			
			//2,读取配置信息
			String user = pr.getProperty("user");
			String password = pr.getProperty("password");
			String url = pr.getProperty("url");
			String driverClass = pr.getProperty("driverClass");
			
			//3.加载驱动
			Class.forName(driverClass);
			
			//4,获取连接
			con = DriverManager.getConnection(url, user,password);
			
			String sql = "insert into customers(name,birth) value(?,?)";
			//预编译sql语句,得到PreparedStatement对象
			ps = con.prepareStatement(sql);
			
			//5,填充占位符
			ps.setString(1, "三明治");
			SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
			Date date = sdf.parse("2020-11-02");
			ps.setDate(2, new java.sql.Date(date.getTime()));
			
			//6,执行操作
			ps.execute();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
			//7,关闭资源
			try {
				if(ps != null)
					ps.close();
			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			try {
				if(con != null)
					con.close();
			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}
}

配置信息:jdbc.properties文件
user=root
password=123456
url=jdbc:mysql://localhost:3306/students
driverClass=com.mysql.jdbc.Driver

执行结果:

在这里插入图片描述

PreparedStatement实现对表数据的增删改查操作

到此这篇关于Java PreparedStatement用法详解的文章就介绍到这了,更多相关Java PreparedStatement用法内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • SpringBoot实现JWT token自动续期的示例代码

    SpringBoot实现JWT token自动续期的示例代码

    本文主要介绍了SpringBoot实现JWT token自动续期的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-01-01
  • java自定义Scanner类似功能类的实例讲解

    java自定义Scanner类似功能类的实例讲解

    这篇文章主要介绍了java自定义Scanner类似功能类的实例讲解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-08-08
  • JVM 参数配置详细介绍

    JVM 参数配置详细介绍

    这篇文章主要介绍了JVM 参数配置详细介绍的相关资料,需要的朋友可以参考下
    2017-02-02
  • Java基础之并发相关知识总结

    Java基础之并发相关知识总结

    随着摩尔定律逐步失效,cpu单核性能达到瓶颈,并发逐渐逐渐得到广泛应用,因而学习了解以及使用并发就显得十分重要,但并发相关的知识比较琐碎,不易系统学习,因而本篇文章参照王宝令老师《Java并发编程》来勾勒出一张“并发全景图”,需要的朋友可以参考下
    2021-05-05
  • Java回调函数实例代码详解

    Java回调函数实例代码详解

    这篇文章主要介绍了Java回调函数实例代码详解,需要的朋友可以参考下
    2017-10-10
  • Java日常练习题,每天进步一点点(59)

    Java日常练习题,每天进步一点点(59)

    下面小编就为大家带来一篇Java基础的几道练习题(分享)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧,希望可以帮到你
    2021-08-08
  • 关于CommandLineRunner的使用详解

    关于CommandLineRunner的使用详解

    本文介绍了如何在SpringBoot项目启动时使用CommandLineRunner和ApplicationRunner接口进行数据预加载或操作,通过实现这两个接口,可以在项目启动时执行特定的任务,同时,还展示了如何使用@Order注解来控制多个实现类的加载顺序
    2024-12-12
  • SpringBoot 如何使用 JWT 保护 Rest Api 接口

    SpringBoot 如何使用 JWT 保护 Rest Api&nbs

    使用spring-boot开发RESTful API非常的方便,在生产环境中,对发布的 API 增加授权保护是非常必要的,现在我们来看如何利用JWT技术为API 增加授权保护,保证只有获得授权的用户才能够访问 API,感兴趣的朋友跟随小编一起看看吧
    2024-02-02
  • Java获取本机IP地址的三种方法总结

    Java获取本机IP地址的三种方法总结

    这篇文章主要为大家详细介绍了java获取本机IP地址的三种方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-04-04
  • 教你Springboot如何实现图片上传

    教你Springboot如何实现图片上传

    这篇文章主要介绍了教你Springboot如何实现图片上传,首先大家明白图片上传,需要在数据库定义一个varchar类型的img字段图片字段,本文结合示例代码给大家介绍的非常详细,需要的朋友可以参考下
    2023-07-07

最新评论