欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java中Statement 與 PreparedStatement接口之間的關(guān)系和區(qū)別

 更新時間:2020年07月20日 09:38:26   作者:suwu150  
這篇文章主要介紹了java中Statement 與 PreparedStatement接口之間的關(guān)系和區(qū)別,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

Statement 和 PreparedStatement之間的關(guān)系和區(qū)別.

    關(guān)系:PreparedStatement繼承自Statement,都是接口
    區(qū)別:PreparedStatement可以使用占位符,是預(yù)編譯的,批處理比Statement效率高   

詳解:

1、PreparedStatement:表示預(yù)編譯的 SQL 語句的對象。

   接口:public interface PreparedStatement extends Statement之間的繼承關(guān)系
   SQL 語句被預(yù)編譯并存儲在 PreparedStatement 對象中。然后可以使用此對象多次高效地執(zhí)行該語句。
   注:用于設(shè)置 IN 參數(shù)值的設(shè)置方法(setShort、setString 等等)必須指定與輸入?yún)?shù)的已定義 SQL 類型兼容的類型。例如,如果 IN 參數(shù)具有 SQL 類型 INTEGER,那么應(yīng)該使用 setInt 方法,問號的位置也是應(yīng)該注意的,因為第一個問好的位置為1,第二個問號的位置為2.以此類推。
   如果需要任意參數(shù)類型轉(zhuǎn)換,使用 setObject 方法時應(yīng)該將目標(biāo) SQL 類型作為其參數(shù)。
   在以下設(shè)置參數(shù)的示例中,con 表示一個活動連接:
              PreparedStatement pstmt = con.prepareStatement("UPDATE EMPLOYEES SALARY = ? WHERE ID = ?");
              pstmt.setBigDecimal(1, 1533.00)
              pstmt.setInt(2, 1102)
              pstmt.execute()//注意提交時這里不能再有sql語句,不同于Statment

演示代碼:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.Statement;
public class PreparedStatementTest {
	public static void main(String[] args) {
		test_autoCommit();
	}
	public static void test_autoCommit()
	{
		String driver="oracle.jdbc.driver.OracleDriver";
		String url="jdbc:oracle:thin:@127.0.0.1:1521:orcl";
		String user="briup";
		String password="briup";
		Connection conn=null;
		PreparedStatement ps=null;
		try {
			//1、注冊驅(qū)動
			Class.forName(driver);
			//2、獲取連接
			 conn= DriverManager.getConnection(url, user, password);
			 //System.out.println(conn);
			//3、創(chuàng)建prepareStatement對象
			 String sql="insert into lover values(?,?,?)";
			 ps=conn.prepareStatement(sql);
			 //4、執(zhí)行sql語句
			 ps.setInt(1,21);//代表設(shè)置給第一個?號位置的值為Int類型的21
			 ps.setString(2,"suwu150");//代表設(shè)置給第二個?號位置的值為String類型的suwu150
			 java.util.Date utilDate=new java.util.Date();//進行類型轉(zhuǎn)換,由util類型的date轉(zhuǎn)化為sql類型的
			 ps.setDate(3, new java.sql.Date(utilDate.getTime()));
			 //ps.execute();//執(zhí)行
			 System.out.println(ps.execute());//執(zhí)行表輸出返回的結(jié)果,結(jié)果為false,因為沒有返回的結(jié)果集
			 //5、處理結(jié)果集
		} catch (Exception e) {
			e.printStackTrace();
		}
		finally{
			//6、關(guān)閉資源
			try {
				if(ps!=null)ps.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
			try {
				if(conn!=null)conn.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
	}
}	

插入之后的結(jié)果


2、Statement:用于執(zhí)行靜態(tài) SQL 語句并返回它所生成結(jié)果的對象。

   接口:public interface Statement extends Wrapper
在默認(rèn)情況下,同一時間每個 Statement 對象只能打開一個 ResultSet 對象。因此,如果讀取一個 ResultSet 對象與另一個交叉,則這兩個對象必須是由不同的 Statement 對象生成的。如果存在某個語句的打開的當(dāng)前 ResultSet 對象,則 Statement 接口中的所有執(zhí)行方法都會隱式關(guān)閉它。  
   如以下操作:創(chuàng)建statement對象
          Statement stat=conn.createStatement();
          String sql="insert into lover values(6,'suxingxing',to_date('21-9-2016','dd-mm-yyyy'))";
          stat.execute(sql);//這里提交時應(yīng)該有sql語句,不同于PreparedStatment
來看一下實際使用吧:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class StatementTest {
	public static void main(String[] args) {
		test_autoCommit();
	}
	public static void test_autoCommit()
 {
 String driver="oracle.jdbc.driver.OracleDriver";
 String url="jdbc:oracle:thin:@127.0.0.1:1521:orcl";
 String user="briup";
 String password="briup";
 Connection conn=null;
 Statement stat=null;
 try {
 //1、注冊驅(qū)動
 Class.forName(driver);
 //2、獲取連接
 conn= DriverManager.getConnection(url, user, password);
 conn.setAutoCommit(false);
 //System.out.println(conn);
 //3、創(chuàng)建statement對象
 stat=conn.createStatement();
 //4、執(zhí)行sql語句
 String sql="insert into lover values(22,'suxingxing',to_date('21-9-2016','dd-mm-yyyy'))"; //注意格式 
// stat.execute(sql);
 System.out.println(stat.execute(sql)); //返回值為false,因為同樣沒有ResultSet返回集
 conn.commit();
 //5、處理結(jié)果集
 } catch (Exception e) {
 e.printStackTrace();
 try {
 conn.rollback();
 } catch (SQLException e1) {
 e1.printStackTrace();
 }
 }
 finally{
 //6、關(guān)閉資源
 try {
 if(stat!=null)stat.close();
 } catch (SQLException e) {
 e.printStackTrace();
 }
 try {
 if(conn!=null)conn.close();
 } catch (SQLException e) {
 e.printStackTrace();
 }
 }
 }
}

插入之后的結(jié)果:


到此這篇關(guān)于java中Statement 與 PreparedStatement接口之間的關(guān)系和區(qū)別的文章就介紹到這了,更多相關(guān)Statement 與 PreparedStatement接口內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • JAVA基于靜態(tài)數(shù)組實現(xiàn)棧的基本原理與用法詳解

    JAVA基于靜態(tài)數(shù)組實現(xiàn)棧的基本原理與用法詳解

    這篇文章主要介紹了JAVA基于靜態(tài)數(shù)組實現(xiàn)棧的基本原理與用法,結(jié)合實例形式詳細分析了JAVA基于靜態(tài)數(shù)組實現(xiàn)棧相關(guān)原理、用法與操作注意事項,需要的朋友可以參考下
    2020-03-03
  • SpringBoot2.0 整合 SpringSecurity 框架實現(xiàn)用戶權(quán)限安全管理方法

    SpringBoot2.0 整合 SpringSecurity 框架實現(xiàn)用戶權(quán)限安全管理方法

    Spring Security是一個能夠為基于Spring的企業(yè)應(yīng)用系統(tǒng)提供聲明式的安全訪問控制解決方案的安全框架。這篇文章主要介紹了SpringBoot2.0 整合 SpringSecurity 框架,實現(xiàn)用戶權(quán)限安全管理 ,需要的朋友可以參考下
    2019-07-07
  • 基于jvm java內(nèi)存區(qū)域的介紹

    基于jvm java內(nèi)存區(qū)域的介紹

    下面小編就為大家?guī)硪黄趈vm java內(nèi)存區(qū)域的介紹。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06
  • Java設(shè)計模式之橋模式(Bridge模式)介紹

    Java設(shè)計模式之橋模式(Bridge模式)介紹

    這篇文章主要介紹了Java設(shè)計模式之橋模式(Bridge模式)介紹,本文講解了為什么使用橋模式、如何實現(xiàn)橋模式、Bridge模式在EJB中的應(yīng)用等內(nèi)容,需要的朋友可以參考下
    2015-03-03
  • springboot項目關(guān)閉swagger如何防止漏洞掃描

    springboot項目關(guān)閉swagger如何防止漏洞掃描

    這篇文章主要介紹了springboot項目關(guān)閉swagger如何防止漏洞掃描,本文通過示例代碼給大家介紹的非常詳細,感興趣的朋友跟隨小編一起看看吧
    2024-05-05
  • SpringBoot自定義start詳細圖文教程

    SpringBoot自定義start詳細圖文教程

    這篇文章主要給大家介紹了關(guān)于SpringBoot自定義start的相關(guān)資料,主要講述如何自定義start,實現(xiàn)一些自定義類的自動裝配,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2023-11-11
  • Java數(shù)據(jù)結(jié)構(gòu)最清晰圖解二叉樹前 中 后序遍歷

    Java數(shù)據(jù)結(jié)構(gòu)最清晰圖解二叉樹前 中 后序遍歷

    樹是一種重要的非線性數(shù)據(jù)結(jié)構(gòu),直觀地看,它是數(shù)據(jù)元素(在樹中稱為結(jié)點)按分支關(guān)系組織起來的結(jié)構(gòu),很象自然界中的樹那樣。樹結(jié)構(gòu)在客觀世界中廣泛存在,如人類社會的族譜和各種社會組織機構(gòu)都可用樹形象表示
    2022-01-01
  • Mybatis集成到Spring容器的詳細步驟

    Mybatis集成到Spring容器的詳細步驟

    在現(xiàn)在的JavaEE開發(fā)過程中,我們經(jīng)常會使用到Spring+SpringMVC+Mybatis這個組合,那么Mybatis是如何集成到Spring中的呢,下面通過實例代碼給大家詳細講解,感興趣的朋友跟隨小編一起看看吧
    2024-03-03
  • Java數(shù)組添加元素的兩種方法

    Java數(shù)組添加元素的兩種方法

    這篇文章主要介紹了Java數(shù)組添加元素的兩種方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友跟著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • 親手教你SpringBoot中的多數(shù)據(jù)源集成問題

    親手教你SpringBoot中的多數(shù)據(jù)源集成問題

    本文主要是介紹基于springboot的多數(shù)據(jù)源切換,輕量級的一種集成方案,對于小型的應(yīng)用可以采用這種方案,我之前在項目中用到是因為簡單,便于擴展以及優(yōu)化,對SpringBoot多數(shù)據(jù)源集成問題感興趣的朋友一起看看吧
    2022-03-03

最新評論