Java 呼叫 MySQL 預存程序完整範例。本站提醒廣大學習愛好者:此文章僅供參考,不一定能完全符合您的需求。以下是完整範例正文
本文範例說明如何使用 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 = conn.prepareCall("{call p_test()}");
cStmt.executeUpdate();
完整 Java 程式碼:
import java.sql.*;
/** 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();
}
/** 呼叫帶有輸入參數的預存程序 */
public static void callIn(int in) {
Connection conn = ConnectDb.getConnection();
CallableStatement cs = null;
try {
cs = conn.prepareCall("{call sp1(?)}");
cs.setInt(1, in);
cs.execute();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (cs != null) cs.close();
if (conn != null) conn.close();
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
/** 呼叫帶有輸出參數的預存程序 */
public static void callOut() {
Connection conn = ConnectDb.getConnection();
CallableStatement cs = null;
try {
cs = conn.prepareCall("{call sp2(?)}");
cs.registerOutParameter(1, Types.INTEGER);
cs.execute();
int i = cs.getInt(1);
System.out.println(i);
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (cs != null) cs.close();
if (conn != null) conn.close();
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
/** 呼叫返回結果集的預存程序 */
public static void callResult() {
Connection conn = ConnectDb.getConnection();
CallableStatement cs = null;
ResultSet rs = null;
try {
cs = conn.prepareCall("{call sp6()}");
rs = cs.executeQuery();
while (rs.next()) {
System.out.println(rs.getString(1));
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (rs != null) rs.close();
if (cs != null) cs.close();
if (conn != null) conn.close();
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
}
/** 取得資料庫連線的類別 */
class ConnectDb {
public static Connection getConnection() {
Connection conn = null;
try {
Class.forName("org.gjt.mm.mysql.Driver").newInstance();
String dbname = "test";
String url = "jdbc:mysql://localhost/" + dbname + "?user=root&password=root&useUnicode=true&characterEncoding=8859_1";
conn = DriverManager.getConnection(url);
} catch (Exception e) {
e.printStackTrace();
}
return conn;
}
}
希望本文所述對大家的 Java 程式設計有所幫助。