【Java】如何呼叫MySQL儲存過程
Java呼叫MySQL的儲存過程,需要用JDBC連線,環境eclipse
首先檢視MySQL中的資料庫的儲存過程,接著編寫程式碼呼叫
1.工程目錄結構mysql> show procedure status; +------+-------------+-----------+----------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+ | Db | Name | Type | Definer | Modified | Created | Security_type | Comment | character_set_client | collation_connection | Database Collation | +------+-------------+-----------+----------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+ | book | findAllBook | PROCEDURE |
[email protected] | 2016-09-04 11:13:31 | 2016-09-04 11:13:31 | DEFINER | | gbk | gbk_chinese_ci | utf8_general_ci | | book | pro_test | PROCEDURE | [email protected] | 2016-11-13 08:27:17 | 2016-11-13 08:27:17 | DEFINER | | gbk | gbk_chinese_ci | utf8_general_ci | | book | pro_user | PROCEDURE |[email protected] | 2016-11-13 08:44:34 | 2016-11-13 08:44:34 | DEFINER | | gbk | gbk_chinese_ci | utf8_general_ci | +------+-------------+-----------+----------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+ 3 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 | +-------------+------------------------+---------------------------------------------------------------------------------------------------+----------------------+----------------------+--------------------+ 1 row in set (0.00 sec)
2.Book.java
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;
}
}
3.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 {
/**
* 獲取資料庫連線
* @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();
}
}
}
4.右鍵 Run As --> Java Application, 控制檯輸出
5.執行儲存過程中的 sql語句
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 |
+------------------+-------+-----------+----------+
4 rows in set (0.00 sec)
相關推薦
【Java】如何呼叫MySQL儲存過程
Java呼叫MySQL的儲存過程,需要用JDBC連線,環境eclipse 首先檢視MySQL中的資料庫的儲存過程,接著編寫程式碼呼叫 mysql> show procedure status; +------+-------------+-----------+-
【Java】操作mysql數據庫
nbsp port str ase .exe drive manager 執行 sel package bd; import java.sql.Connection; import java.sql.DriverManager; import java.sq
spring data jpa 如何呼叫mysql儲存過程?
A:首先定義儲存過程依賴的jpa表: @Entity @Table(name="evenmngt_childthingtree_tmp")//資料庫中的表名 @Name
jdbc呼叫mysql儲存過程
public static void updateMtBeginTimeIsSix() { Connection connection = null; CallableStatement cs = null; try { connection = DataSource.getI
Learning-MySQL【2】:MySQL儲存引擎及資料庫的操作管理
一、儲存引擎 儲存引擎實際上就是如何儲存資料、如何為儲存的資料建立索引和如何更新、查詢資料。儲存引擎也可以稱為表型別。 MySQL提供了外掛式(pluggable)的儲存引擎,儲存引擎是基於表的。同一個資料庫,不同的表,儲存引擎可以不同。甚至,同一個資料庫表在不同的場合可以應用不同的儲存引擎。 檢視當前
mybaties呼叫mysql儲存過程。儲存過程返回多個select結果集。
先看需求,直接上圖 從圖中看出,需要12條普通的SELECT語句,所以就放到儲存過程中 儲存過程如下: DROP PROCEDURE IF EXISTS proc_report; DELIMITER $ CREATE PROCEDURE proc_report( OUT d_norma
java中呼叫Oracle儲存過程時,出現異常:java.sql.SQLException: ORA-00928: 缺失 SELECT 關鍵字(已解決)
在java中呼叫Oracle儲存過程時,出現異常:java.sql.SQLException: ORA-00928: 缺失 SELECT 關鍵字 //java程式碼 @Test public void testProcedure(){
使用JDBC呼叫mysql儲存過程
多敲幾次java連線mysql,多操作一些簡單的例項,多看大神們的部落格很快就能掌握好java對資料庫的操作了。 程式碼: public static void procedure() throws ClassNotFoundException, SQLException{
【Oracle】PL/SQL 儲存過程 顯式遊標、隱式遊標、動態遊標
【Oracle】PL/SQL 顯式遊標、隱式遊標、動態遊標 2013年06月17日 09:02:51 AlphaWang 閱讀數:13009更多 個人分類: 【Database】 在PL/SQL塊中執行SELECT、INSERT、DELET
python 呼叫mysql儲存過程返回結果集
儲存過程: delimiter | create procedure get_product_info(in imid int(10),int iuser varchar(20)) begin select * from tb_test where mid = i
【java】呼叫阿里雲通訊介面發簡訊
【前言】 呼叫簡訊傳送驗證碼的方法阿里雲都寫好了,而且會自動限制單日傳送量,每分鐘一條,同一手機號單日10條等等。安全性很好。而且國際國內都能發。【介面程式碼】package com.candyshop.utils.util; import com.aliy
【Java】呼叫http介面獲取資料
方法如下:import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.HttpURLConnecti
JFinal呼叫Mysql儲存過程方法
1.首先要清楚JFinal提供了Db+Record的模式,而其中有一個方法是這樣的Db.execute(ICallback),。 2.ICallback是JFinal提供的呼叫儲存過程的介面,介面中提供了run方法,用來實現儲存過程的呼叫。 簡單描述程式碼過程 (1)我在s
ssm框架呼叫mysql儲存過程
1.建表 /* Navicat MySQL Data Transfer Source Server : localMysql Source Server Version : 50628 Source Host : 127.0.0.1:
shell 指令碼呼叫mysql儲存過程
#!/bin/sh ## The function of the script is used to balance statistics,we get ## data from the table accseqs,after the analysis and cal
c / c + + 呼叫mysql儲存過程
E文好的請檢視原文,菜鳥級翻譯,歡迎批評指正! mysql5.0支援儲存過程後,現在mysql6.0Alpha 版本也是可用的。6.0不僅支援大型資料庫(如 oracle和如此的大多數功能(如儲存過程、檢視、觸發器、作業等,並修復了這些功能存在的bug,6.0.1 版
Java中呼叫Oracle儲存過程及儲存函式
一. 編寫測試所用儲存函式或函式 --1.建立一個帶引數的儲存過程,沒有返回值 --給指定的員工漲100元的工資,並且列印漲錢和漲後的工資 create or replace procedure raisesalary(eno in number) as
mybatis呼叫mysql儲存過程返回結果集
儲存過程中經常需要返回結果集。Mysql中直接用select即可返回結果集。而oracle則需要使用遊標來返回結果集。這一點Mysql相對比較方便,如下程式碼即可實現輸出結果集: 儲存過程定義: D
Spring mvc呼叫mysql儲存過程
mysql> use modbus; Database changed mysql> DELIMITER $ mysql> drop procedure if exists p4; -> create procedure p4() -
java jdbc 呼叫db2儲存過程 第一節
呼叫無參儲存過程 建立儲存過程語句如下 建立無參儲存過程 CREATE PROCEDURE "PCCCMALL"."testOne" () SPECIFIC "SQL110512004935601" LANGUAGE SQL NOT DET