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

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

PHP教程|ASP.NET教程|JAVA教程|ASP教程|編程技術|正則表達式|

服務器之家 - 編程語言 - JAVA教程 - Java實現調用MySQL存儲過程詳解

Java實現調用MySQL存儲過程詳解

2020-07-05 13:29shootercheng JAVA教程

相信大家都知道存儲過程是在大型數據庫系統中,一組為了完成特定功能的SQL語句集。存儲過程是數據庫中的一個重要對象,任何一個設計良好的數據庫應用程序都應該用到存儲過程。Java調用mysql存儲過程,實現如下,有需要的朋

前言

存儲過程(Stored Procedure)是存儲在數據庫中經過第一次編譯后再次調用不需要再次編譯,用戶通過指定存儲過程的名字并給出參數(如果該存儲過程帶有參數)來執行它。

Java調用MySQL的存儲過程,需要用JDBC連接,環境eclipse

首先查看MySQL中的數據庫的存儲過程,接著編寫代碼調用

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
mysql> show procedure status;
+------+-------------+-----------+----------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+
| Db | Name  | Type  | Definer  | Modified   | Created    | Security_type | Comment | character_set_client | collation_connection | Database Collation |
+------+-------------+-----------+----------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+
| book | findAllBook | PROCEDURE | root@localhost | 2016-09-04 11:13:31 | 2016-09-04 11:13:31 | DEFINER  |   | gbk     | gbk_chinese_ci  | utf8_general_ci |
| book | pro_test | PROCEDURE | root@localhost | 2016-11-13 08:27:17 | 2016-11-13 08:27:17 | DEFINER  |   | gbk     | gbk_chinese_ci  | utf8_general_ci |
| book | pro_user | PROCEDURE | root@localhost | 2016-11-13 08:44:34 | 2016-11-13 08:44:34 | DEFINER  |   | gbk     | gbk_chinese_ci  | utf8_general_ci |
+------+-------------+-----------+----------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+
rows in set (0.01 sec)
 
mysql> show create procedure findAllBook;
+-------------+------------------------+---------------------------------------------------------------------------------------------------+----------------------+----------------------+--------------------+
| Procedure | sql_mode    | Create Procedure                     | character_set_client | collation_connection | Database Collation |
+-------------+------------------------+---------------------------------------------------------------------------------------------------+----------------------+----------------------+--------------------+
| findAllBook | NO_ENGINE_SUBSTITUTION | CREATE DEFINER=`root`@`localhost` PROCEDURE `findAllBook`()
begin
 select * from tb_books;
end | gbk     | gbk_chinese_ci  | utf8_general_ci |
+-------------+------------------------+---------------------------------------------------------------------------------------------------+----------------------+----------------------+--------------------+
row in set (0.00 sec)

一、工程目錄結構

Java實現調用MySQL存儲過程詳解

二、Book.java

?
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
package com.scd.book;
 
public class Book {
 private String name; //圖書名稱
 private double price; //價格
 private int bookCount; //數量
 private String author; //作者
 
 public String getName()
 {
  //System.out.println(name);
  return name;
 }
 public void setName(String name)
 {
  this.name = name;
 }
 public double getPrice()
 {
  return price;
  
 }
 public void setPrice(double price)
 {
  this.price = price;
 }
 public int getBookCount()
 {
  return bookCount;
 }
 public void setBookCount(int bookCount)
 {
  this.bookCount = bookCount;
 }
 public String getAuthor()
 {
  return author;
 }
 public void setAuthor(String author)
 {
  //System.out.println(author);
  this.author = author;
 }
 
}

三、FindBook.java

?
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
package com.scd.book;
 
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
 
public class FindBook {
 /**
  * 獲取數據庫連接
  * @return Connection對象
  */
 public Connection getConnection()
 {
  Connection conn = null; //數據庫連接
  try
  {
   Class.forName("com.mysql.jdbc.Driver"); //加載數據庫驅動,注冊到驅動管理器
   /*數據庫鏈接地址*/
   String url = "jdbc:mysql://localhost:3306/book?useUnicode=true&characterEncoding=UTF-8";
   String username = "root";
   String password = "123456";
   /*創建Connection鏈接*/
   conn = DriverManager.getConnection(url, username, password);
   
  }
  catch (ClassNotFoundException e){
   
   e.printStackTrace();
  } catch (SQLException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  return conn; //返回數據庫連接
  
 }
 /**
  * 通過存儲過程查詢數據
  * @return List<Book>
  */
 public List<Book> findAll()
 {
  List <Book> list = new ArrayList<Book>(); //實例化List對象
  Connection conn = getConnection(); //創建數據庫連接
  try
  {
   //調用存儲過程
   CallableStatement cs = conn.prepareCall("{call findAllBook()}");
   ResultSet rs = cs.executeQuery(); //執行查詢操作,并獲取結果集
   while(rs.next())
   {
    Book book = new Book(); //實例化Book對象
    book.setName(rs.getString("name")); //對name屬性賦值
    book.setPrice(rs.getDouble("price")); //對price屬性賦值
    book.setBookCount(rs.getInt("bookCount")); //對bookCount屬性賦值
    book.setAuthor(rs.getString("author")); //對author屬性賦值
    list.add(book);
   }
   
  }catch(Exception e)
  {
   e.printStackTrace();
  
  return list;  //返回list
 }
 /**
  * 主函數 調用存儲過程(測試使用)
  * @param args
  */
 public static void main(String[] args)
 {
  FindBook fb = new FindBook();
  //System.out.println(fb.findAll());
  for (Book book : fb.findAll())
  {
   System.out.print(book.getName() + "--" + book.getPrice() + "--");
   System.out.print(book.getBookCount() + "--" + book.getAuthor());
   System.out.println();
  }
 }
}

四、右鍵 Run As --> Java Application, 控制臺輸出

Java實現調用MySQL存儲過程詳解

五、執行存儲過程中的 sql語句

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
mysql> select * from tb_books;
+------------------+-------+-----------+----------+
| name    | price | bookCount | author |
+------------------+-------+-----------+----------+
| Java叢入門到精通 | 56.78 |  13 | Mr. Sun |
| 數據結構   | 67.3 |  8962 | Mr. Sun |
| 編譯原理   | 78.66 |  5767 | Mr. Sun |
| 數據結構   | 67.42 |  775 | Mr.Cheng |
+------------------+-------+-----------+----------+
rows in set (0.00 sec)
mysql> call findAllBook();
+------------------+-------+-----------+----------+
| name    | price | bookCount | author |
+------------------+-------+-----------+----------+
| Java叢入門到精通 | 56.78 |  13 | Mr. Sun |
| 數據結構   | 67.3 |  8962 | Mr. Sun |
| 編譯原理   | 78.66 |  5767 | Mr. Sun |
| 數據結構   | 67.42 |  775 | Mr.Cheng |
+------------------+-------+-----------+----------+
rows in set (0.00 sec)

總結

以上就是Java調用MySQL存儲過程的全部內容,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 亚洲国产精品自产在线播放 | 香蕉精品视频 | 国产福利视频一区二区微拍视频 | 啪一啪日一日 | a级毛片毛片免费很很综合 a级黄色视屏 | 国产成人综合久久精品红 | japanese秘书丝袜 | 亚洲精品国产精品国自产观看 | 欧美日韩色图 | 青青青国产精品国产精品久久久久 | 暖暖 免费 高清 中文 日本 | 91久久碰国产 | 欧美色fx性乌克兰 | 拿捏小说 | 麻豆网站视频国产在线观看 | 日韩网站在线观看 | 亚洲第一区欧美日韩精品 | 日韩高清在线免费看 | 久久国产主播福利在线 | 欧美性野久久久久久久久 | 日韩一区国产二区欧美三 | 精品午夜久久网成年网 | 亚洲国产精品一区二区三区久久 | 欧美一级片免费看 | 百合文高h | 四虎影视入口 | 亚洲国产精品免费在线观看 | 国产亚洲一区二区三区 | 黑人开嫩苞 | 亚洲无限观看 | 小浪妇奶真大水多 | 日韩大片免费观看 | 美女张开下身让男人桶 | 成人亚洲欧美综合 | 久久久久国产一级毛片高清片 | 欧美xxxxx九色视频免费观看 | yy111111影院理论大片 | 无码天堂亚洲国产AV久久 | t66y地址一地址二地址三 | 国产精品视频一区二区三区 | 饭冈加奈子乳喷cead144 |