一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務器之家 - 編程語言 - JAVA教程 - java調用mysql存儲過程實例分析

java調用mysql存儲過程實例分析

2019-12-20 14:32imzoer JAVA教程

這篇文章主要介紹了java調用mysql存儲過程的方法,以實例形式較為詳細的分析了mysql數據庫的建立和存儲過程的實現方法,需要的朋友可以參考下

本文實例講述了java調用mysql存儲過程的方法。分享給大家供大家參考。具體如下:

數據庫的測試代碼如下 :

1、新建表test

?
1
2
3
4
5
create table test(
field1 int not null
)
TYPE=MyISAM ;
insert into test(field1) values(1);

2、刪除已存在的存儲過程:

?
1
2
3
-- 刪除儲存過程
delimiter // -- 定義結束符號
drop procedure p_test;

3、mysql存儲過程定義:

?
1
2
3
4
5
6
create procedure p_test()
begin
declare temp int;
set temp = 0;
update test set field1 = values(temp);
end

4、調用方法:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
CallableStatement cStmt = conn.prepareCall("{call p_test()}");
cStmt.executeUpdate();
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();
 }
 /**
 * 調用帶有輸入參數的存儲過程
 * @param in   stored procedure input parametervalue
 */
 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();
  }
 }
 }
 /**
 * 調用帶有輸出參數的存儲過程
 *
 */
 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();
  }
 }
 }
 /**
 * 調用輸出結果集的存儲過程
 */
 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();
  }
 }
 }
}
/**
*獲取數據庫連接的類
*/
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
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=8859_1";
  conn= DriverManager.getConnection(url);
 } catch (Exception e) {
  e.printStackTrace();
 }
 return conn;
 }
}

希望本文所述對大家的java程序設計有所幫助。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 特黄特色大片免费视频大全 | 美女翘臀内疯狂进出 | 精品久久综合一区二区 | 午夜精品久久久久久久2023 | 国产视频久久久久 | 欧美在线视频一区 | 久久国产精品二区99 | 精品久久一 | fuqer日本老师 | 国产在线观看色 | 国产在线精品观看 | 互换娇妻爽文100系列小说 | 色婷婷久久综合中文久久一本` | 女同学高中你下面好紧 | 亚洲男人天堂a | 日本老妇成熟 | 国产综合亚洲专区在线 | 男人和女人上床 | 亚洲 综合 欧美在线 热 | 奶茶视频官网免费 | 精精国产xxxx视频在线播放器 | 奇米影视久久777中文字幕 | 我的妹妹最近有点怪在线观看 | 国产1区2区在线观看 | 99久久免费国产精品热 | chinese国产打屁股 | 翁息肉小说老扒 | 冰山美人调教耻辱h | 国产精品视频色拍拍 | 色综合久久夜色精品国产 | 国产清纯91天堂在线观看 | 操乳 | 国产成人精品第一区二区 | 99热色 | 国产精品久久免费 | 蜜桃视频一区二区三区四区 | 国产精品第1页在线播放 | 男人的天堂视频在线 | 99国产精品免费观看视频 | 日韩专区 | 精品香蕉99久久久久网站 |