返回顶部
首页 > 资讯 > 后端开发 > Python >Java之PreparedStatement的使用详解
  • 612
分享到

Java之PreparedStatement的使用详解

2024-04-02 19:04:59 612人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

PreparedStatement介绍 可以通过调用 Connection 对象的 prepareStatement(String sql) 方法获取 PreparedSt

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

执行结果:

在这里插入图片描述

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

--结束END--

本文标题: Java之PreparedStatement的使用详解

本文链接: https://lsjlt.com/news/132361.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Java之PreparedStatement的使用详解
    PreparedStatement介绍 可以通过调用 Connection 对象的 prepareStatement(String sql) 方法获取 PreparedSt...
    99+
    2024-04-02
  • JDBC之PreparedStatement 详解
    JDBC中的PreparedStatement是一种用于执行预编译SQL语句的接口。相比于Statement接口,使用Prepare...
    99+
    2023-09-07
    JDBC
  • Java PreparedStatement用法详解
    PreparedStatement介绍 可以通过调用 Connection 对象的 prepareStatement(String sql) 方法获取 Prepar...
    99+
    2024-04-02
  • Java数据库连接PreparedStatement的使用详解
    本文介绍了Java数据库连接PreparedStatement的使用详解,分享给大家,具体如下:首先了解Statement和PreparedStatement的区别:由此可见,一般使用PreparedStatement。操作数据库SU(Co...
    99+
    2023-05-31
    java preparedstatement ava
  • 数据库操作之PreparedStatement的使用
    PreparedStatement的使用 1.1 PreparedStatement介绍 可以通过调用 Connection 对象的 preparedStatement(String sql) 方法获取 PreparedStateme...
    99+
    2014-11-23
    数据库操作之PreparedStatement的使用
  • JDBC中PreparedStatement详解及应用场景介绍
    前言 在Java中,当需要向数据库中执行SQL语句并传递参数时,我们通常会使用PreparedStatement接口。PreparedStatement继承自Statement接口,用于预编译SQL语句并执行参数化查询,这样可以提高执行...
    99+
    2023-09-22
    sql java mybatis 数据库 mysql
  • Java之Jackson使用案例详解
    序列化 序列化 (Serialization)是将对象的状态信息转换为可以存储或传输的形式的过程。在序列化期间,对象将其当前状态写入到临时或持久性存储区。以后,可以通过从存储区中读取...
    99+
    2024-04-02
  • Java String之contains方法的使用详解
    目录JavaStringcontains方法小结一下String的contain()函数用法例如Java String contains方法 package api.api; p...
    99+
    2024-04-02
  • 详解java整合solr5.0之solrj的使用
    首先导入solrj需要的的架包需要注意的是低版本是solr是使用SolrServer进行URL实例的,5.0之后已经使用SolrClient替代这个类了,在添加之后首先我们需要根据schema.xml配置一下我们的分词器这里的msg_all...
    99+
    2023-05-31
    java solr ava
  • Java基础之详解HashSet的使用方法
    Java HashSet HashSet 基于 HashMap 来实现的,是一个不允许有重复元素的集合。 HashSet 允许有 null 值。 HashSet 是无序的,即不会记录...
    99+
    2024-04-02
  • Java学习之Lambda表达式的使用详解
    目录Lamda表达式函数式接口Lambda表达式的推导函数式接口的不同类型Lambda表达式与函数式接口的简单应用Lambda表达式的优缺点Lamda表达式 λ希腊字母...
    99+
    2022-12-26
    Java Lambda表达式用法 Java Lambda表达式 Java Lambda
  • MySQL之mysqldump的使用详解
    一、mysqldump 简介 mysqldump 是 MySQL 自带的逻辑备份工具。 它的备份原理是通过协议连接到 MySQL 数据库,将需要备份的数据查询出来,将查询出的数据转换成对应的insert 语句,当我...
    99+
    2022-05-17
    MySQL mysqldump
  • pytorch--之halfTensor的使用详解
    证明出错在dataloader里面 在pytorch当中,float16和half是一样的数据结构,都是属于half操作, 然后dataloader不能返回half值,所以在dat...
    99+
    2024-04-02
  • python之pil的使用详解
    一:PIL功能介绍与安装 PIL,全称Python Image Library,主要作用是图像处理,可用于图片剪切、粘贴、缩放、镜像、水印、颜色块、滤镜、图像格式转换、色场空间转换、...
    99+
    2024-04-02
  • 详解vue之mixin的使用
    目录vue之mixin的使用mixin之中的data数据访问mixin / index.jsHome.vueAbout2.vuemixin中的 methods方法和computed使...
    99+
    2024-04-02
  • SpringBoot之Controller的使用详解
    本文介绍了 SpringBoot之Controller的使用,分享给大家,具体如下:@Controller:处理http请求 @RestController:Spring4之后新加的注解,原来返回json需要@ResponseBody配合@...
    99+
    2023-05-31
    springboot controller roller
  • Java本地缓存工具之LoadingCache的使用详解
    目录前言环境依赖代码演示一下总结前言 在工作总常常需要用到缓存,而redis往往是首选,但是短期的数据缓存一般我们还是会用到本地缓存。本文提供一个我在工作中用到的缓存工具,该工具代码...
    99+
    2024-04-02
  • Java ThreadLocal的使用详解
    目录1. 应用场景1.1. 保障线程安全1.2. 显示传递参数2. 实现原理3. 注意事项ThreadLocal是线程私有的局部变量存储容器,可以理解成每个线程都有自己专属的存储容器...
    99+
    2024-04-02
  • Java CompletableFuture的使用详解
    目录CompletableFuture​任务开启任务结束串行任务thenApply\thenApplyAsync 串行将异步结果进行同步\异步的处理handle\hand...
    99+
    2024-04-02
  • Java Runtime的使用详解
    目录前言1. shutdownhook2. exec执行2.1 常规命令执行2.2 管道符2.3源码分析3. 总结前言 最近做项目框架,需要在框架结束的时候,关闭服务器连接,清除部分...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作