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

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

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程序設計有所幫助。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 欧美精品超清在线播放 | 亚洲成人mv| 亚洲国产精品日本无码网站 | 热巴在公交车h文 | 2021国产精品视频 | 超时空要爱国语完整版在线 | 精品国产麻豆免费人成网站 | xnxx18美女 | 加勒比一本大道在线 | 国产精品久久久久久久久久久久久久 | 亚洲精品国产精品精 | 桃乃木香奈ipx在线播放 | 国产大秀视频 | 精品久久看| 国产99热| 日本一卡二卡3卡四卡网站精品 | 日韩经典在线 | 无限时间看片在线观看 | 天堂久久久久va久久久久 | 亚洲成在人网站天堂一区二区 | 向日葵视频app下载18岁以下勿看 | 亚洲欧美日韩另类精品一区二区三区 | 性一交一无一伦一精一品 | 日产精品卡一卡2卡三卡乱码工厂 | 亚洲精品久久麻豆蜜桃 | 青青青久在线视频免费观看 | 精品一区二区国语对白 | 黑人开嫩苞 | 欧美办公室silkstocking | 欧美日韩不卡视频 | 欧美午夜性春猛交bbb | 国产欧美一区二区三区免费 | 欧美最猛性xxxxx动态图 | 亚洲精品国产福利片 | 国产一成人精品福利网站 | 成人一区二区丝袜美腿 | 欧美精品久久久亚洲 | 女性全身裸露无遮挡 | 末代皇帝无删减版在线观看 | 91精品国产色综合久久不卡蜜 | 国产在线观看精品香蕉v区 国产在线观看a |