最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java實現(xiàn)調(diào)用MySQL存儲過程詳解

 更新時間:2016年11月16日 09:07:31   作者:shootercheng  
相信大家都知道存儲過程是在大型數(shù)據(jù)庫系統(tǒng)中,一組為了完成特定功能的SQL語句集。存儲過程是數(shù)據(jù)庫中的一個重要對象,任何一個設(shè)計良好的數(shù)據(jù)庫應(yīng)用程序都應(yīng)該用到存儲過程。Java調(diào)用mysql存儲過程,實現(xiàn)如下,有需要的朋友們可以參考借鑒,下面來一起看看吧。

前言

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

Java調(diào)用MySQL的存儲過程,需要用JDBC連接,環(huán)境eclipse

首先查看MySQL中的數(shù)據(jù)庫的存儲過程,接著編寫代碼調(diào)用

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)

一、工程目錄結(jié)構(gòu)

二、Book.java

package com.scd.book;

public class Book {
 private String name; //圖書名稱
 private double price; //價格
 private int bookCount; //數(shù)量
 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

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 {
 /**
  * 獲取數(shù)據(jù)庫連接
  * @return Connection對象
  */
 public Connection getConnection()
 {
  Connection conn = null; //數(shù)據(jù)庫連接
  try
  {
   Class.forName("com.mysql.jdbc.Driver"); //加載數(shù)據(jù)庫驅(qū)動,注冊到驅(qū)動管理器
   /*數(shù)據(jù)庫鏈接地址*/
   String url = "jdbc:mysql://localhost:3306/book?useUnicode=true&characterEncoding=UTF-8";
   String username = "root";
   String password = "123456";
   /*創(chuàng)建Connection鏈接*/
   conn = DriverManager.getConnection(url, username, password); 
   
  }
  catch (ClassNotFoundException e){
   
   e.printStackTrace();
  } catch (SQLException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  return conn; //返回數(shù)據(jù)庫連接
  
 }
 /**
  * 通過存儲過程查詢數(shù)據(jù)
  * @return List<Book>
  */
 public List<Book> findAll() 
 {
  List <Book> list = new ArrayList<Book>(); //實例化List對象
  Connection conn = getConnection(); //創(chuàng)建數(shù)據(jù)庫連接
  try
  {
   //調(diào)用存儲過程
   CallableStatement cs = conn.prepareCall("{call findAllBook()}");
   ResultSet rs = cs.executeQuery(); //執(zhí)行查詢操作,并獲取結(jié)果集
   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
 }
 /**
  * 主函數(shù) 調(diào)用存儲過程(測試使用)
  * @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, 控制臺輸出

五、執(zhí)行存儲過程中的 sql語句

mysql> select * from tb_books;
+------------------+-------+-----------+----------+
| name    | price | bookCount | author |
+------------------+-------+-----------+----------+
| Java叢入門到精通 | 56.78 |  13 | Mr. Sun |
| 數(shù)據(jù)結(jié)構(gòu)   | 67.3 |  8962 | Mr. Sun |
| 編譯原理   | 78.66 |  5767 | Mr. Sun |
| 數(shù)據(jù)結(jié)構(gòu)   | 67.42 |  775 | Mr.Cheng |
+------------------+-------+-----------+----------+
rows in set (0.00 sec)
mysql> call findAllBook();
+------------------+-------+-----------+----------+
| name    | price | bookCount | author |
+------------------+-------+-----------+----------+
| Java叢入門到精通 | 56.78 |  13 | Mr. Sun |
| 數(shù)據(jù)結(jié)構(gòu)   | 67.3 |  8962 | Mr. Sun |
| 編譯原理   | 78.66 |  5767 | Mr. Sun |
| 數(shù)據(jù)結(jié)構(gòu)   | 67.42 |  775 | Mr.Cheng |
+------------------+-------+-----------+----------+
rows in set (0.00 sec)

總結(jié)

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

相關(guān)文章

  • SpringBoot中事務(wù)失效的六個原因解析

    SpringBoot中事務(wù)失效的六個原因解析

    這篇文章主要介紹了SpringBoot中事務(wù)失效的六個原因解析,由于Spring的事務(wù)是基于AOP的方式結(jié)合動態(tài)代理來實現(xiàn)的,因此事務(wù)方法一定要是public的,這樣才能便于被Spring做事務(wù)的代理和增強,需要的朋友可以參考下
    2023-10-10
  • Java報錯:Java.io.FileNotFoundException解決方法

    Java報錯:Java.io.FileNotFoundException解決方法

    這篇文章主要介紹了Java.io.FileNotFoundException的產(chǎn)生原因和解決方法,造成這個報錯的原因可能有文件路徑錯誤、文件被刪除或移動和權(quán)限問題,文中將解決的辦法介紹的非常詳細,需要的朋友可以參考下
    2024-12-12
  • Java中的length和length()深入分析

    Java中的length和length()深入分析

    java中的length屬性是針對數(shù)組說的,比如說你聲明了一個數(shù)組,想知道這個數(shù)組的長度則用到了length這個屬性。java中的length()方法是針對字符串String說的,如果想看這個字符串的長度則用到length()這個方法。這篇文章將介紹幾個關(guān)于Java數(shù)組的關(guān)鍵概念。
    2016-11-11
  • Java實現(xiàn)順序表和鏈表結(jié)構(gòu)

    Java實現(xiàn)順序表和鏈表結(jié)構(gòu)

    大家好,本篇文章主要講的是Java實現(xiàn)順序表和鏈表結(jié)構(gòu),感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-02-02
  • Java中枚舉的實現(xiàn)與應(yīng)用詳解

    Java中枚舉的實現(xiàn)與應(yīng)用詳解

    這篇文章主要介紹了Java中枚舉的實現(xiàn)與應(yīng)用詳解,EnumTest中還有一個VALUES數(shù)組,里面存儲著所有的枚舉實例,調(diào)用values方法時返回VALUES數(shù)組的clone,需要的朋友可以參考下
    2023-12-12
  • springboot配置允許循環(huán)依賴問題

    springboot配置允許循環(huán)依賴問題

    這篇文章主要介紹了springboot配置允許循環(huán)依賴問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • java 學習筆記(入門篇)_java程序helloWorld

    java 學習筆記(入門篇)_java程序helloWorld

    安裝配置完Java的jdk,下面就開始寫第一個java程序--hello World.用來在控制臺輸出“Hello World”,接下來詳細介紹,感興趣的朋友可以參考下
    2013-01-01
  • SpringBoot多環(huán)境開發(fā)與日志小結(jié)

    SpringBoot多環(huán)境開發(fā)與日志小結(jié)

    這篇文章主要介紹了SpringBoot多環(huán)境開發(fā)與日志,下面給大家說一下如何基于多環(huán)境開發(fā)做配置獨立管理,務(wù)必掌握,需要的朋友可以參考下
    2022-08-08
  • springboot @ConfigurationProperties和@PropertySource的區(qū)別

    springboot @ConfigurationProperties和@PropertySource的區(qū)別

    這篇文章主要介紹了springboot @ConfigurationProperties和@PropertySource的區(qū)別,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • Java序列化中子類、父類構(gòu)造函數(shù)問題實例分析

    Java序列化中子類、父類構(gòu)造函數(shù)問題實例分析

    這篇文章主要介紹了Java序列化中子類、父類構(gòu)造函數(shù)問題,結(jié)合實例形式分析了java父類與子類構(gòu)造函數(shù)中序列化接口調(diào)用相關(guān)操作技巧與使用注意事項,需要的朋友可以參考下
    2019-09-09

最新評論

泗水县| 建始县| 河源市| 十堰市| 鹤峰县| 青州市| 荃湾区| 玉门市| 冕宁县| 阿拉善左旗| 中阳县| 达孜县| 海兴县| 唐河县| 泰兴市| 巫溪县| 星座| 鄱阳县| 湟源县| 合川市| 都兰县| 云梦县| 邯郸县| 阜宁县| 沈丘县| 赞皇县| 赤城县| 乌拉特前旗| 青田县| 祁连县| 图木舒克市| 永胜县| 岐山县| 锡林浩特市| 兰西县| 宁明县| 平安县| 望谟县| 蕲春县| 武陟县| 垫江县|