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

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

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

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

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

詳解:

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

   接口:public interface PreparedStatement extends Statement之間的繼承關(guān)系
   SQL 語(yǔ)句被預(yù)編譯并存儲(chǔ)在 PreparedStatement 對(duì)象中。然后可以使用此對(duì)象多次高效地執(zhí)行該語(yǔ)句。
   注:用于設(shè)置 IN 參數(shù)值的設(shè)置方法(setShort、setString 等等)必須指定與輸入?yún)?shù)的已定義 SQL 類(lèi)型兼容的類(lèi)型。例如,如果 IN 參數(shù)具有 SQL 類(lèi)型 INTEGER,那么應(yīng)該使用 setInt 方法,問(wèn)號(hào)的位置也是應(yīng)該注意的,因?yàn)榈谝粋€(gè)問(wèn)好的位置為1,第二個(gè)問(wèn)號(hào)的位置為2.以此類(lèi)推。
   如果需要任意參數(shù)類(lèi)型轉(zhuǎn)換,使用 setObject 方法時(shí)應(yīng)該將目標(biāo) SQL 類(lèi)型作為其參數(shù)。
   在以下設(shè)置參數(shù)的示例中,con 表示一個(gè)活動(dòng)連接:
              PreparedStatement pstmt = con.prepareStatement("UPDATE EMPLOYEES SALARY = ? WHERE ID = ?");
              pstmt.setBigDecimal(1, 1533.00)
              pstmt.setInt(2, 1102)
              pstmt.execute()//注意提交時(shí)這里不能再有sql語(yǔ)句,不同于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、注冊(cè)驅(qū)動(dòng)
			Class.forName(driver);
			//2、獲取連接
			 conn= DriverManager.getConnection(url, user, password);
			 //System.out.println(conn);
			//3、創(chuàng)建prepareStatement對(duì)象
			 String sql="insert into lover values(?,?,?)";
			 ps=conn.prepareStatement(sql);
			 //4、執(zhí)行sql語(yǔ)句
			 ps.setInt(1,21);//代表設(shè)置給第一個(gè)?號(hào)位置的值為Int類(lèi)型的21
			 ps.setString(2,"suwu150");//代表設(shè)置給第二個(gè)?號(hào)位置的值為String類(lèi)型的suwu150
			 java.util.Date utilDate=new java.util.Date();//進(jìn)行類(lèi)型轉(zhuǎn)換,由util類(lèi)型的date轉(zhuǎn)化為sql類(lèi)型的
			 ps.setDate(3, new java.sql.Date(utilDate.getTime()));
			 //ps.execute();//執(zhí)行
			 System.out.println(ps.execute());//執(zhí)行表輸出返回的結(jié)果,結(jié)果為false,因?yàn)闆](méi)有返回的結(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 語(yǔ)句并返回它所生成結(jié)果的對(duì)象。

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

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、注冊(cè)驅(qū)動(dòng)
 Class.forName(driver);
 //2、獲取連接
 conn= DriverManager.getConnection(url, user, password);
 conn.setAutoCommit(false);
 //System.out.println(conn);
 //3、創(chuàng)建statement對(duì)象
 stat=conn.createStatement();
 //4、執(zhí)行sql語(yǔ)句
 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,因?yàn)橥瑯記](méi)有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)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • SSM框架整合之junit測(cè)試的方法

    SSM框架整合之junit測(cè)試的方法

    本篇文章主要介紹了SSM框架整合之junit測(cè)試的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-03-03
  • Java實(shí)現(xiàn)SHA算法的方法詳解

    Java實(shí)現(xiàn)SHA算法的方法詳解

    這篇文章主要介紹了Java實(shí)現(xiàn)SHA算法的方法,結(jié)合實(shí)例形式較為詳細(xì)的分析了Java實(shí)現(xiàn)sha算法的原理、實(shí)現(xiàn)與使用相關(guān)操作技巧,需要的朋友可以參考下
    2018-03-03
  • Java中的升序和降序問(wèn)題

    Java中的升序和降序問(wèn)題

    這篇文章主要介紹了Java中的升序和降序問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • java使用三層架構(gòu)實(shí)現(xiàn)電影購(gòu)票系統(tǒng)

    java使用三層架構(gòu)實(shí)現(xiàn)電影購(gòu)票系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了java使用三層架構(gòu)實(shí)現(xiàn)電影購(gòu)票系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-01-01
  • ElasticSearch添加索引代碼實(shí)例解析

    ElasticSearch添加索引代碼實(shí)例解析

    這篇文章主要介紹了ElasticSearch添加索引代碼實(shí)例解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04
  • Java?Rabbitmq中四種集群架構(gòu)的區(qū)別詳解

    Java?Rabbitmq中四種集群架構(gòu)的區(qū)別詳解

    這篇文章主要為大家詳細(xì)介紹了Java?Rabbitmq中四種集群架構(gòu)的區(qū)別,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-02-02
  • JAVA關(guān)鍵字及作用詳解

    JAVA關(guān)鍵字及作用詳解

    本文主要介紹了Java關(guān)鍵字及作用,具有很好的參考價(jià)值,下面跟著小編一起來(lái)看下吧
    2017-02-02
  • Java中Gson的使用詳解

    Java中Gson的使用詳解

    這篇文章主要介紹了Java中Gson的使用詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • spring整合shiro框架的實(shí)現(xiàn)步驟記錄

    spring整合shiro框架的實(shí)現(xiàn)步驟記錄

    Shiro是一個(gè)強(qiáng)大易用的Java安全框架,提供了認(rèn)證、授權(quán)、加密和會(huì)話(huà)管理等功能。下面這篇文章主要給大家介紹了關(guān)于spring整合shiro框架的實(shí)現(xiàn)步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2018-05-05
  • Java中final與繼承操作實(shí)例分析

    Java中final與繼承操作實(shí)例分析

    這篇文章主要介紹了Java中final與繼承操作,結(jié)合實(shí)例形式分析了Java中使用final阻止繼承的相關(guān)原理與操作注意事項(xiàng),需要的朋友可以參考下
    2019-09-09

最新評(píng)論

临江市| 舞钢市| 都昌县| 晋中市| 霍林郭勒市| 澎湖县| 临安市| 林周县| 汝阳县| 育儿| 九寨沟县| 交口县| 丹寨县| 江都市| 永仁县| 棋牌| 宣恩县| 张家港市| 随州市| 华坪县| 高雄县| 涡阳县| 巨野县| 册亨县| 仪征市| 南木林县| 龙山县| 东兰县| 柞水县| 鲁甸县| 淮北市| 乌拉特前旗| 卢氏县| 金堂县| 资兴市| 安溪县| 宁陵县| 岳西县| 犍为县| 屯门区| 济宁市|