Java調用MySQL存儲過程並獲得返回值的方法
本文yjbys小編為大家主要介紹了Java調用MySQL存儲過程並獲得返回值的方法,實例分析了java實現MySQL存儲過程的相關技巧,具有一定參考借鑑價值,需要的朋友可以參考下
本文實例講述了Java調用MySQL存儲過程並獲得返回值的方法。分享給大家供大家參考。具體如下:
private void empsInDept(Connection myConnect, int deptId) throws SQLException {
CALlableStatement cStmt = areCall("{CALL sp_emps_in_dept(?)}");
nt(1, deptId);
ute();
ResultSet rs1 = esultSet();
while (()) {
tln(tring("department_name") + " " + tring("location"));
}
e();
/* process second result set */
if (oreResults()) {
ResultSet rs2 = esultSet();
while (()) {
tln(nt(1) + " " + tring(2) + " " + tring(3));
}
e();
}
e();
}
本文實例講述了java調用mysql存儲過程的方法。分享給大家供大家參考。具體如下:
數據庫的測試代碼如下 :
1、新建表test
create table test(
field1 int not null
)
TYPE=MyISAM ;
insert into test(field1) values(1);
2、刪除已存在的存儲過程:
-- 刪除儲存過程
delimiter // -- 定義結束符號
drop procedure p_test;
3、mysql存儲過程定義:
create procedure p_test()
begin
declare temp int;
set temp = 0;
update test set field1 = values(temp);
end
4、調用方法:
CallableStatement cStmt = areCall("{call p_test()}");
uteUpdate();
import .*;
/**
iGoder
*/
public class ProcedureTest {
/*
表和存儲過程定義如下:
delimiter //
DROP TABLE if exists test //
CREATE TABLE test(
id int(11) NULL
) //
drop procedure if existssp1 //
create procedure sp1(in p int)
comment 'insert into a int value'
begin
declare v1 int;
set v1 = p;
insert into test(id) values(v1);
end
//
drop procedure if exists sp2 //
create procedure sp2(out p int)
begin
select max(id) into p from test;
end
//
drop procedure if exists sp6 //
create procedure sp6()
begin
select * from test;
end//
*/
public static void main(String[] args) {
//callIn(111);
//callOut();
callResult();
}
/**
* 調用帶有輸入參數的存儲過程
* @param in stored procedure input parametervalue
*/
public static void callIn(int in){
//獲取連接
Connection conn = onnection();
CallableStatement cs = null;
try {
//可以直接傳入參數
//cs = areCall("{call sp1(1)}");
//也可以用問號代替
cs = areCall("{call sp1(?)}");
//設置第一個輸入參數的`值為110
nt(1, in);
ute();
} catch (Exception e) {
tStackTrace();
} finally {
try {
if(cs != null){
e();
}
if(conn != null){
e();
}
} catch (Exception ex) {
tStackTrace();
}
}
}
/**
* 調用帶有輸出參數的存儲過程
*
*/
public static void callOut() {
Connection conn = onnection();
CallableStatement cs = null;
try {
cs = areCall("{call sp2(?)}");
//第一個參數的類型為Int
sterOutParameter(1, GER);
ute();
//得到第一個值
int i = nt(1);
tln(i);
} catch (Exception e) {
tStackTrace();
} finally {
try {
if(cs != null){
e();
}
if(conn != null){
e();
}
} catch (Exception ex) {
tStackTrace();
}
}
}
/**
* 調用輸出結果集的存儲過程
*/
public static void callResult(){
Connection conn = onnection();
CallableStatement cs = null;
ResultSet rs = null;
try {
cs = areCall("{call sp6()}");
rs = uteQuery();
//循環輸出結果
while(()){
tln(tring(1));
}
} catch (Exception e) {
tStackTrace();
} finally {
try {
if(rs != null){
e();
}
if(cs != null){
e();
}
if(conn != null){
e();
}
} catch (Exception ex) {
tStackTrace();
}
}
}
}
/**
*獲取數據庫連接的類
*/
import ection;
import erManager;
import aredStatement;
import ltSet;
import xception;
import ement;
class ConnectDb {
public static Connection getConnection(){
Connection conn = null;
PreparedStatement preparedstatement = null;
try {
ame("er")nstance();
String dbname = "test";
String url="jdbc:mysql://localhost/"+dbname+"?user=root&password=root&useUnicode=true&characterEncoding=8859_1";
conn= onnection(url);
} catch (Exception e) {
tStackTrace();
}
return conn;
}
}
希望本文所述對大家的java程序設計有所幫助。
-
Tomcat JVM如何優化
TomcatJVM優化是我們經常遇到的問題,下面YJBYS小編為大家整理了關於TomcatJVM如何優化的'文章,希望對你有所幫助。#-Xmx6000m:設置JVM最大可用內存為6000MB#-Xms6000m:設置JVM初始可用內存為6000MB#-Xmn2g:設置年輕代大小為2G#-Xss128k:設置每個線程的堆棧大小為128...
-
關於JDK5交通燈模擬控制系統
為了方便廣大程序猿交流和學習,下面小編準備了關於JDK5交通燈模擬控制系統,歡迎大家參考!本系統由,,和組成。:packagefic;publicenumLamp{//前進,左拐,右拐S2N("N2S","S2W",false),S2W("N2E","E2W",false),S2E(null,null,true),E2W("W2E","E2S",false),E2S("W2N","S2N",false),E2N(nu...
-
Java定時器代碼的編寫
在某些時候,我們需要實現這樣的功能,某一程序隔一段時間執行一次,而這一事情由系統本身來完成,並不是人為的觸發,我們一般可稱此為定時器任務.其實到Java中,實現起來是非常簡單的,下面我們以每隔5秒鐘打引一句"Helloworld"為例:importrTask;publicclassTimeTast...
-
Java遠程通訊可選技術及原理
一個最基礎的問題就是遠程服務是怎麼通訊的,在Java領域中有很多可實現遠程通訊的技術,例如:RMI、MINA、ESB、Burlap、Hessian、SOAP、EJB和JMS等,這些名詞之間到底是些什麼關係呢,它們背後到底是基於什麼原理實現的呢,瞭解這些是實現分佈式服務框架的基礎知識,而如果...