亚洲免费在线视频-亚洲啊v-久久免费精品视频-国产精品va-看片地址-成人在线视频网

您的位置:首頁技術(shù)文章
文章詳情頁

Java存儲過程調(diào)用CallableStatement的方法

瀏覽:5日期:2022-08-20 11:08:12

什么是存儲過程?

一個存儲過程是一個可編程的函數(shù),它在數(shù)據(jù)庫中創(chuàng)建并保存。它可以有SQL語句和一些特殊的控制結(jié)構(gòu)組成。當(dāng)希望在不同的應(yīng)用程序或平臺上執(zhí)行相同的函數(shù),或者封裝特定功能時,存儲過程是非常有用的。數(shù)據(jù)庫中的存儲過程可以看做是對編程中面向?qū)ο蠓椒ǖ哪M。它允許控制數(shù)據(jù)的訪問方式。

存儲過程的優(yōu)點:

(1).存儲過程增強了SQL語言的功能和靈活性。存儲過程可以用流控制語句編寫,有很強的靈活性,可以完成復(fù)雜的判斷和較復(fù)雜的運算。

(2).存儲過程允許標(biāo)準(zhǔn)組件是編程。存儲過程被創(chuàng)建后,可以在程序中被多次調(diào)用,而不必重新編寫該存儲過程的SQL語句。而且數(shù)據(jù)庫專業(yè)人員可以隨時對存儲過程進行修改,對應(yīng)用程序源代碼毫無影響。

(3).存儲過程能實現(xiàn)較快的執(zhí)行速度。如果某一操作包含大量的Transaction-SQL代碼或分別被多次執(zhí)行,那么存儲過程要比批處理的執(zhí)行速度快很多。因為存儲過程是預(yù)編譯的。在首次運行一個存儲過程時查詢,優(yōu)化器對其進行分析優(yōu)化,并且給出最終被存儲在系統(tǒng)表中的執(zhí)行計劃。而批處理的Transaction-SQL語句在每次運行時都要進行編譯和優(yōu)化,速度相對要慢一些。

(4).存儲過程能過減少網(wǎng)絡(luò)流量。針對同一個數(shù)據(jù)庫對象的操作(如查詢、修改),如果這一操作所涉及的Transaction-SQL語句被組織程存儲過程,那么當(dāng)在客戶計算機上調(diào)用該存儲過程時,網(wǎng)絡(luò)中傳送的只是該調(diào)用語句,從而大大增加了網(wǎng)絡(luò)流量并降低了網(wǎng)絡(luò)負載。

(5).存儲過程可被作為一種安全機制來充分利用。系統(tǒng)管理員通過執(zhí)行某一存儲過程的權(quán)限進行限制,能夠?qū)崿F(xiàn)對相應(yīng)的數(shù)據(jù)的訪問權(quán)限的限制,避免了非授權(quán)用戶對數(shù)據(jù)的訪問,保證了數(shù)據(jù)的安全。

簡單案例,創(chuàng)建于調(diào)用

drop procedure if exists pr_add;-- 計算兩個數(shù)之和create procedure pr_add( a int, b int)begin declare c int; if a is null then set a = 0; end if; if b is null then set b = 0; end if; set c = a + b; select c as sum;/*return c;- 不能在 MySQL 存儲過程中使用。return 只能出現(xiàn)在函數(shù)中。*/end;set @a = 10;set @b = 20;call pr_add(@a, @b);

Java 案例

1.存儲過程

CREATE PROCEDURE add_pro(a int,b int,out sum int)BEGINset sum = a + b;END;

2.調(diào)用

package ch13;import java.sql.*;/** * Created by Jiqing on 2016/12/20. */public class ConnMySql { public static void main(String[] args) throws Exception { // 1.加載驅(qū)動 Class.forName('com.mysql.jdbc.Driver'); // try() {} 語法中小括號中的資源會自動回收 try ( // 2.連接數(shù)據(jù)庫 Connection conn = DriverManager.getConnection('jdbc:mysql://127.0.0.1:3306/tpshop','root','123456'); CallableStatement cstmt = conn.prepareCall('{call add_pro(?,?,?)}') ) { cstmt.setInt(1,4); cstmt.setInt(2,5); cstmt.registerOutParameter(3,Types.INTEGER); cstmt.execute(); System.out.println('執(zhí)行結(jié)果是:'+cstmt.getInt(3)); } }}

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

以上就是Java存儲過程調(diào)用CallableStatement的方法的詳細內(nèi)容,更多關(guān)于Java存儲過程的資料請關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Java
相關(guān)文章:
主站蜘蛛池模板: 久在线观看视频 | 国产精亚洲视频 | 中文字幕亚洲另类天堂 | 国产91丝袜在线播放九色 | 欧美成人一区二区 | 免费永久国产在线视频 | 综合欧美视频一区二区三区 | 拍拍拍又黄又爽无挡视频免费 | 欧美日韩一区二区三区高清不卡 | 日韩一级特黄 | 日韩中文精品亚洲第三区 | 国产精品三级在线观看 | 亚洲综合久久久 | 中文字幕人成不卡一区 | 日本一区二区三区在线 视频观看免费 | 亚洲永久| 久久r视频 | 久久亚洲国产 | 久久91精品国产91久久小草 | 国产高清自拍 | 国内精品久久久久久影院老狼 | 日本成年人视频网站 | 国产男女免费视频 | 视频一区在线 | 国内自拍区 | 成人精品视频一区二区在线 | 久久精品国产精品青草不卡 | 一级做人爱a视频正版免费 一级做性色a爱片久久片 | 免费高清欧美一区二区视频 | 女黄人东京手机福利视频 | 香蕉超级碰碰碰97视频蜜芽 | 在线亚洲播放 | 亚洲毛片一级巨乳 | 国产91久久精品 | 亚洲国产精品看片在线观看 | 亚洲人成网站在线在线 | 免费的三级网站 | 污全彩肉肉无遮挡彩色 | 国产99视频免费精品是看6 | 精品欧美一区二区在线观看欧美熟 | 97视频免费上传播放 |