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

Java之PreparedStatement的使用詳解

 更新時間:2021年08月11日 16:56:15   作者:繁星*墨菲  
這篇文章主要介紹了Java之PreparedStatement的使用詳解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下

PreparedStatement介紹

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

在這里插入圖片描述

PreparedStatement vs Statement

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

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

在這里插入圖片描述

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

相關文章

  • netflix.discovery.shared.transport.TransportException:Cannot execute request on any known server

    netflix.discovery.shared.transport.TransportException:Cannot

    這篇文章主要介紹了netflix.discovery.shared.transport.TransportException:Cannot execute request on any known server報錯問題及解決方法,感興趣的朋友一起看看吧
    2023-09-09
  • Spring MVC如何設置請求頭和響應頭的Header

    Spring MVC如何設置請求頭和響應頭的Header

    這篇文章主要介紹了Spring MVC如何設置請求頭和響應頭的Header問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-03-03
  • SpringBoot文件分片上傳的示例代碼

    SpringBoot文件分片上傳的示例代碼

    分片上傳在很多地方都可以使用的到,本文主要介紹了SpringBoot文件分片上傳的示例代碼,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • Java接口統(tǒng)一樣式返回模板簡介

    Java接口統(tǒng)一樣式返回模板簡介

    這篇文章主要介紹了Java接口統(tǒng)一樣式返回模板簡介,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-10-10
  • Java HelloWorld原理分析_動力節(jié)點Java學院整理

    Java HelloWorld原理分析_動力節(jié)點Java學院整理

    我們初學java的第一個程序是"hello world"。下面通過實例代碼給大家講解Java HelloWorld原理分析,感興趣的朋友一起學習吧
    2017-05-05
  • Spring多對象引入方法

    Spring多對象引入方法

    今天小編就為大家分享一篇關于Spring多對象引入方法,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • java反射使用示例分享

    java反射使用示例分享

    這篇文章主要介紹了java反射使用示例,代碼很簡單,需要的朋友可以參考下
    2014-02-02
  • Java對象深復制與淺復制實例詳解

    Java對象深復制與淺復制實例詳解

    這篇文章主要介紹了 Java對象深復制與淺復制實例詳解的相關資料,需要的朋友可以參考下
    2017-05-05
  • java身份證合法性校驗工具類實例代碼

    java身份證合法性校驗工具類實例代碼

    這篇文章主要給大家介紹了關于java身份證合法性校驗工具類的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-09-09
  • java檢查數(shù)組是否有重復元素的方法

    java檢查數(shù)組是否有重復元素的方法

    這篇文章主要介紹了java檢查數(shù)組是否有重復元素的方法,涉及java針對數(shù)組元素的操作技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-07-07

最新評論

来凤县| 金乡县| 仙游县| 和田市| 略阳县| 合江县| 阜南县| 抚顺县| 华亭县| 沅陵县| 沙河市| 东兰县| 隆尧县| 本溪| 景谷| 兰考县| 平利县| 涡阳县| 礼泉县| 汝州市| 南部县| 兰坪| 米易县| 杭锦旗| 通山县| 潞城市| 南宁市| 加查县| 灌云县| 雅安市| 高雄市| 金湖县| 湖口县| 台东县| 四会市| 若尔盖县| 报价| 望奎县| 鹤岗市| 武强县| 正蓝旗|