java實現調用Mysql存儲過程分析代碼
存儲過程(Stored Procedure)是在大型數據庫系統中,一組為了完成特定功能的SQL 語句集,存儲在數據庫中經過第一次編譯后再次調用不需要再次編譯,用戶通過指定存儲過程的名字并給出參數(如果該存儲過程帶有參數)來執行它。存儲過程是數據庫中的一個重要對象,任何一個設計良好的數據庫應用程序都應該用到存儲過程。Java調用mysql存儲過程,實現如下,如果感覺不錯希望大家收藏。
數據庫的測試代碼如下 :
1、新建表test,sql代碼如下:
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、 Java調用帶有輸入參數的存儲過程,代碼如下:
public static void callIn(int in){
//獲取連接
Connection conn = ConnectDb.getConnection();
CallableStatement cs = null;
try {
//可以直接傳入參數
//cs = conn.prepareCall("{call sp1(1)}");
//也可以用問號代替
cs = conn.prepareCall("{call sp1(?)}");
//設置第一個輸入參數的值為110
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();
}
}
}
5、Java調用帶有輸出參數的存儲過程,代碼如下:
public static void callOut() {
Connection conn = ConnectDb.getConnection();
CallableStatement cs = null;
try {
cs = conn.prepareCall("{call sp2(?)}");
//第一個參數的類型為Int
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();
}
}
}
6、Java調用輸出結果集的存儲過程,代碼如下:
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();
}
}
}
}
7、Java獲取數據庫連接的工具類,代碼如下:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class ConnectDb {
public static Connection getConnection(){
Connection conn = null;
PreparedStatement preparedstatement = 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=utf-8";
conn= DriverManager.getConnection(url);
} catch (Exception e) {
e.printStackTrace();
}
return conn;
}
} 本文由用戶 yg3n 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!