最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java PreparedStatement用法詳解

 更新時(shí)間:2021年08月13日 08:42:36   作者:繁星*墨菲  
這篇文章主要介紹了Java PreparedStatement用法詳解,本篇文章通過簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下

PreparedStatement介紹

  • 可以通過調(diào)用 Connection 對(duì)象的 prepareStatement(String sql) 方法獲取
  • PreparedStatement 對(duì)象PreparedStatement 接口是 Statement 的子接口,它表示一條預(yù)編譯過的 SQL 語句
  • PreparedStatement 對(duì)象所代表的 SQL 語句中的參數(shù)用問號(hào)(?)來表示(?在SQL中表示占位符),調(diào)用 PreparedStatement 對(duì)象的 setXxx() 方法來設(shè)置這些參數(shù). setXxx() 方法有兩個(gè)參數(shù),第一個(gè)參數(shù)是要設(shè)置的 SQL 語句中的參數(shù)的索引(從 1 開始),第二個(gè)是設(shè)置的 SQL 語句中的參數(shù)的值

在這里插入圖片描述

PreparedStatement vs Statement

  • 代碼的可讀性和可維護(hù)性。
  • PreparedStatement 能最大可能提高性能:
    • DBServer會(huì)對(duì)預(yù)編譯語句提供性能優(yōu)化。因?yàn)轭A(yù)編譯語句有可能被重復(fù)調(diào)用,所以語句在被DBServer的編譯器編譯后的執(zhí)行代碼被緩存下來,那么下次調(diào)用時(shí)只要是相同的預(yù)編譯語句就不需要編譯,只要將參數(shù)直接傳入編譯過的語句執(zhí)行代碼中就會(huì)得到執(zhí)行。
    • 在statement語句中,即使是相同操作但因?yàn)閿?shù)據(jù)內(nèi)容不一樣,所以整個(gè)語句本身不能匹配,沒有緩存語句的意義.事實(shí)是沒有數(shù)據(jù)庫會(huì)對(duì)普通語句編譯后的執(zhí)行代碼緩存。這樣每執(zhí)行一次都要對(duì)傳入的語句編譯一次。
    • (語法檢查,語義檢查,翻譯成二進(jìn)制命令,緩存)
  • PreparedStatement 可以防止 SQL 注入

插入案例

PreparedStatement常用的方法:

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

在這里插入圖片描述

parameterIndex the first parameter is 1, the second is 2, …占位符參數(shù)索引是從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)

在這里插入圖片描述

執(zhí)行操作:

在這里插入圖片描述

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.加載驅(qū)動(dòng)
			Class.forName(driverClass);
			
			//4,獲取連接
			con = DriverManager.getConnection(url, user,password);
			
			String sql = "insert into customers(name,birth) value(?,?)";
			//預(yù)編譯sql語句,得到PreparedStatement對(duì)象
			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,執(zhí)行操作
			ps.execute();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
			//7,關(guān)閉資源
			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

執(zhí)行結(jié)果:

在這里插入圖片描述

PreparedStatement實(shí)現(xiàn)對(duì)表數(shù)據(jù)的增刪改查操作

到此這篇關(guān)于Java PreparedStatement用法詳解的文章就介紹到這了,更多相關(guān)Java PreparedStatement用法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • SpringBoot實(shí)現(xiàn)JWT token自動(dòng)續(xù)期的示例代碼

    SpringBoot實(shí)現(xiàn)JWT token自動(dòng)續(xù)期的示例代碼

    本文主要介紹了SpringBoot實(shí)現(xiàn)JWT token自動(dòng)續(xù)期的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01
  • java自定義Scanner類似功能類的實(shí)例講解

    java自定義Scanner類似功能類的實(shí)例講解

    這篇文章主要介紹了java自定義Scanner類似功能類的實(shí)例講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • JVM 參數(shù)配置詳細(xì)介紹

    JVM 參數(shù)配置詳細(xì)介紹

    這篇文章主要介紹了JVM 參數(shù)配置詳細(xì)介紹的相關(guān)資料,需要的朋友可以參考下
    2017-02-02
  • Java基礎(chǔ)之并發(fā)相關(guān)知識(shí)總結(jié)

    Java基礎(chǔ)之并發(fā)相關(guān)知識(shí)總結(jié)

    隨著摩爾定律逐步失效,cpu單核性能達(dá)到瓶頸,并發(fā)逐漸逐漸得到廣泛應(yīng)用,因而學(xué)習(xí)了解以及使用并發(fā)就顯得十分重要,但并發(fā)相關(guān)的知識(shí)比較瑣碎,不易系統(tǒng)學(xué)習(xí),因而本篇文章參照王寶令老師《Java并發(fā)編程》來勾勒出一張“并發(fā)全景圖”,需要的朋友可以參考下
    2021-05-05
  • Java回調(diào)函數(shù)實(shí)例代碼詳解

    Java回調(diào)函數(shù)實(shí)例代碼詳解

    這篇文章主要介紹了Java回調(diào)函數(shù)實(shí)例代碼詳解,需要的朋友可以參考下
    2017-10-10
  • Java日常練習(xí)題,每天進(jìn)步一點(diǎn)點(diǎn)(59)

    Java日常練習(xí)題,每天進(jìn)步一點(diǎn)點(diǎn)(59)

    下面小編就為大家?guī)硪黄狫ava基礎(chǔ)的幾道練習(xí)題(分享)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧,希望可以幫到你
    2021-08-08
  • 關(guān)于CommandLineRunner的使用詳解

    關(guān)于CommandLineRunner的使用詳解

    本文介紹了如何在SpringBoot項(xiàng)目啟動(dòng)時(shí)使用CommandLineRunner和ApplicationRunner接口進(jìn)行數(shù)據(jù)預(yù)加載或操作,通過實(shí)現(xiàn)這兩個(gè)接口,可以在項(xiàng)目啟動(dòng)時(shí)執(zhí)行特定的任務(wù),同時(shí),還展示了如何使用@Order注解來控制多個(gè)實(shí)現(xiàn)類的加載順序
    2024-12-12
  • SpringBoot 如何使用 JWT 保護(hù) Rest Api 接口

    SpringBoot 如何使用 JWT 保護(hù) Rest Api&nbs

    使用spring-boot開發(fā)RESTful API非常的方便,在生產(chǎn)環(huán)境中,對(duì)發(fā)布的 API 增加授權(quán)保護(hù)是非常必要的,現(xiàn)在我們來看如何利用JWT技術(shù)為API 增加授權(quán)保護(hù),保證只有獲得授權(quán)的用戶才能夠訪問 API,感興趣的朋友跟隨小編一起看看吧
    2024-02-02
  • Java獲取本機(jī)IP地址的三種方法總結(jié)

    Java獲取本機(jī)IP地址的三種方法總結(jié)

    這篇文章主要為大家詳細(xì)介紹了java獲取本機(jī)IP地址的三種方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • 教你Springboot如何實(shí)現(xiàn)圖片上傳

    教你Springboot如何實(shí)現(xiàn)圖片上傳

    這篇文章主要介紹了教你Springboot如何實(shí)現(xiàn)圖片上傳,首先大家明白圖片上傳,需要在數(shù)據(jù)庫定義一個(gè)varchar類型的img字段圖片字段,本文結(jié)合示例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2023-07-07

最新評(píng)論

疏勒县| 贵南县| 牡丹江市| 宜兰市| 丹阳市| 凌源市| 二连浩特市| 满城县| 故城县| 中卫市| 万源市| 津市市| 公主岭市| 桦甸市| 综艺| 宕昌县| 扎兰屯市| 高陵县| 陇川县| 黎川县| 布尔津县| 广宗县| 石门县| 枣强县| 夏津县| 博爱县| 如东县| 石屏县| 虎林市| 甘洛县| 亚东县| 伊金霍洛旗| 阿坝| 阳西县| 阿荣旗| 济阳县| 黔江区| 云林县| 西乌珠穆沁旗| 遵义县| 山丹县|