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

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

 更新時間:2015年06月01日 17:27:07   作者:imzoer  
這篇文章主要介紹了java調用mysql存儲過程的方法,以實例形式較為詳細的分析了mysql數(shù)據(jù)庫的建立和存儲過程的實現(xiàn)方法,需要的朋友可以參考下

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

數(shù)據(jù)庫的測試代碼如下 :

1、新建表test

create table test(
field1 int not null
)
TYPE=MyISAM ;
insert into test(field1) values(1);

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

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

3、mysql存儲過程定義:

create procedure p_test()
begin
declare temp int;
set temp = 0; 
update test set field1 = values(temp);
end

4、調用方法:

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();
 } 
 /**
 * 調用帶有輸入?yún)?shù)的存儲過程
 * @param in   stored procedure input parametervalue 
 */
 public static void callIn(int in){
 //獲取連接
 Connection conn = ConnectDb.getConnection();
 CallableStatement cs = null;
 try {
  //可以直接傳入?yún)?shù)
  //cs = conn.prepareCall("{call sp1(1)}");
  //也可以用問號代替
  cs = conn.prepareCall("{call sp1(?)}");
  //設置第一個輸入?yún)?shù)的值為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();
  }
 }
 }
 /**
 * 調用帶有輸出參數(shù)的存儲過程
 * 
 */
 public static void callOut() {
 Connection conn = ConnectDb.getConnection();
 CallableStatement cs = null;
 try {
  cs = conn.prepareCall("{call sp2(?)}");
  //第一個參數(shù)的類型為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();
  //循環(huán)輸出結果
  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();
  }
 }
 }
} 
/** 
*獲取數(shù)據(jù)庫連接的類 
*/
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程序設計有所幫助。

相關文章

  • 枚舉java語言中的修飾符組合的實例代碼

    枚舉java語言中的修飾符組合的實例代碼

    這篇文章主要介紹了枚舉java語言中的修飾符組合,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-07-07
  • 詳解Java異常處理的使用與思考

    詳解Java異常處理的使用與思考

    異常處理的概念起源于早期的編程語言,如?LISP、PL/I?和?CLU。這些編程語言首次引入了異常處理機制,以便在程序執(zhí)行過程中檢測和處理錯誤情況。本文主要來介紹一下Java中的異常處理,需要的可以參考一下
    2023-04-04
  • 使用Thrift實現(xiàn)跨語言RPC的調用

    使用Thrift實現(xiàn)跨語言RPC的調用

    Thrift最大的優(yōu)勢就是可以實現(xiàn)跨語言RPC調用,尤其在一些大廠,微服務各模塊之間使用不同的語言是很常見的,本文就將使用java作為服務端,用python作為客戶端,實現(xiàn)不同語言之間的RPC調用,需要的可以參考下
    2023-10-10
  • Java并發(fā)編程中的Exchanger解析

    Java并發(fā)編程中的Exchanger解析

    這篇文章主要介紹了Java并發(fā)編程中的Exchanger解析,Exchanger用于線程間數(shù)據(jù)的交換,它提供一個同步點,在這個同步點,兩個線程可以交換彼此的數(shù)據(jù),這兩個線程通過exchange方法交換數(shù)據(jù),如果第一個線程先執(zhí)行exchange()方法,需要的朋友可以參考下
    2023-11-11
  • 23種設計模式(6)java裝飾者模式

    23種設計模式(6)java裝飾者模式

    這篇文章主要為大家詳細介紹了23種設計模式之java裝飾者模式,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • Java8之lambda最佳實踐_動力節(jié)點Java學院整理

    Java8之lambda最佳實踐_動力節(jié)點Java學院整理

    在8 里面Lambda是最火的主題,不僅僅是因為語法的改變,更重要的是帶來了函數(shù)式編程的思想,我覺得優(yōu)秀的程序員,有必要學習一下函數(shù)式編程的思想以開闊思路
    2017-06-06
  • JsonProperty及JSONField注解的使用說明

    JsonProperty及JSONField注解的使用說明

    文章介紹了兩個常用的Java庫注解:Jackson的@JsonProperty和Fastjson的@JSONField,它們用于控制Java對象與JSON數(shù)據(jù)之間的序列化和反序列化,文章詳細說明了這兩個注解的常見屬性及其使用場景,包括指定屬性名、控制字段可見性、設置默認值和標記字段的必需性
    2024-12-12
  • Java開發(fā)中常用記錄

    Java開發(fā)中常用記錄

    這篇文章主要介紹了Java-編程式事務、Java-Stream、Linux常用命令,需要的朋友可以參考下
    2023-05-05
  • IDEA如何進行commit之后的代碼回退

    IDEA如何進行commit之后的代碼回退

    在 IntelliJ IDEA 中回退 Git 版本涉及查找提交記錄、復制提交編號、重置 HEAD 并強行推送到遠程倉庫,本文提供詳細步驟和注意事項,幫助用戶安全地回退到舊版本
    2024-09-09
  • Java負載均衡服務器實現(xiàn)上傳文件同步

    Java負載均衡服務器實現(xiàn)上傳文件同步

    這篇文章主要介紹了Java負載均衡服務器實現(xiàn)上傳文件同步,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-09-09

最新評論

南阳市| 禄劝| 淮阳县| 乌苏市| 巴彦淖尔市| 宝鸡市| 荔波县| 黔西县| 会理县| 韩城市| 淳化县| 色达县| 莱芜市| 安新县| 体育| 安远县| 迁安市| 清涧县| 沁阳市| 鄂州市| 武川县| 呼图壁县| 洛阳市| 康平县| 津南区| 华蓥市| 内黄县| 贺兰县| 开江县| 沁源县| 易门县| 沙坪坝区| 宣化县| 怀化市| 安阳县| 阿瓦提县| 临潭县| 开平市| 东乡| 马边| 固阳县|