有才華的人,別忘記給滋潤(rùn)你的那塊土壤施肥

            BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            28 隨筆 :: 5 文章 :: 147 評(píng)論 :: 0 Trackbacks
                工作中一直都是用swing,很少接觸數(shù)據(jù)庫(kù),最近事少就幫著把公司服務(wù)器用csv存儲(chǔ)用戶資料信息,轉(zhuǎn)移到mysql中去存儲(chǔ),才得以學(xué)習(xí)下mysql的存儲(chǔ)過程。
                首先在mysql中練習(xí)下存儲(chǔ)過程的小例子:   
          mysql> delimiter //
          mysql
          > create procedure hello()
              
          -> begin
              
          -> select 'It is not a HelloWorld';
              
          -> end
              
          -> //
          Query OK, 
          0 rows affected (0.01 sec)
          其中“delimiter //”的意思是定義結(jié)束符號(hào)為“//”,以此來(lái)替換mysql中的“;”
          在mysql中查詢上面的過程hello():
          mysql> call hello()//
          +------------------------+
          | It is not a HelloWorld |
          +------------------------+
          | It is not a HelloWorld |
          +------------------------+
          1 row in set (0.00 sec)
          建立一個(gè)簡(jiǎn)單的測(cè)試用表:
          mysql> DROP TABLE IF EXISTS `userinfo`.`mapping`;
              
          -> CREATE TABLE  `userinfo`.`mapping` (
              
          ->   `cFieldID` smallint(5) unsigned NOT NULL,
              
          ->   `cFieldName` varchar(30NOT NULL,
              
          ->   PRIMARY KEY  (`cFieldID`)
              
          -> ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
              
          -> //
          Query OK, 
          0 rows affected (0.14 sec)
          向table mapping中插入一些初始化的數(shù)據(jù):
          mysql> load data infile 'd:\\userInfo\\field.txt' into table mapping
              
          -> fields terminated by ',' lines terminated by '\r\n' //
          Query OK, 
          5 rows affected (0.02 sec)
          Records: 
          5  Deleted: 0  Skipped: 0  Warnings: 0
          mysql
          > select *from mapping//
          +----------+-------------+
          | cFieldID | cFieldName  |
          +----------+-------------+
          |        1 | MarketValue |
          |        2 | P/L         |
          |        3 | EName       |
          |        4 | Nominal     |
          |        5 | Chg         |
          +----------+-------------+
          5 rows in set (0.02 sec)
          現(xiàn)在簡(jiǎn)歷一個(gè)向mapping中插入一條記錄并返回記錄的總和
          mysql> drop procedure if exists mappingProc;
              
          ->  create procedure mappingProc(out cnt int)
              
          ->  begin
              
          ->  declare maxid int;
              
          ->  select max(cFieldID)+1 into maxid from mapping;
              
          ->  insert into mapping(cFieldID,cFieldName) values(maxid,'hello');
              
          ->  select count(cFieldID) into cnt from mapping;
              
          ->  end
              
          ->  //
          查找mappingProc():
          mysql> call mappingProc(@a)//
          mysql
          > select @a//
          +------+
          | @a   |
          +------+
          | 6    |
          +------+
          mysql> select * from mapping//
          +----------+-------------+
          | cFieldID | cFieldName  |
          +----------+-------------+
          |        1 | MarketValue |
          |        2 | P/L                 |
          |        3 | EName          |
          |        4 | Nominal     |
          |        5 | Chg         |
          |        6 | hello       |
          +----------+-------------+
          下面是java代碼用來(lái)調(diào)用MySQL的存儲(chǔ)過程:
          package kissJava.sql;
          import java.sql.CallableStatement;
          import java.sql.Connection;
          import java.sql.DriverManager;
          import java.sql.SQLException;
          import java.sql.Types;
          public class SQLUtils {
              String url 
          = "jdbc:mysql://127.0.0.1:3306/userInfo"
              String userName 
          = "root";
              String password 
          = "zhui007";
              
          public Connection getConnection() {
                  Connection con
          =null;
                  
          try{
                      DriverManager.registerDriver(
          new com.mysql.jdbc.Driver());
                      con 
          = DriverManager.getConnection(url, this.userName, this.password);
                  }
          catch(SQLException sw)
                   }

                  
          return con;
              }

              
          public void testProc(){
                  Connection conn 
          = getConnection();
                  CallableStatement stmt 
          = null;
                  
          try{
                      stmt 
          = conn.prepareCall("{call mappingProc(?)}");    
                      stmt.registerOutParameter(
          1, Types.INTEGER);
                      stmt.execute();
                      
          int i= stmt.getInt(1);
                      System.out.println(
          "count = " + i);
                  }
          catch(Exception e){
                      System.out.println(
          "hahad = "+e.toString());
                  }
          finally{
                      
          try {
                          stmt.close();
                          conn.close();
                      }
          catch (Exception ex) {
                          System.out.println(
          "ex : "+ ex.getMessage());
                      }

                  }

              }

              
          public static void main(String[] args) {
                  
          new SQLUtils().testProc();
              }

          }
          在到MySQL中查詢可看到插入一條新的記錄
          posted on 2008-07-16 12:20 kissjava 閱讀(32257) 評(píng)論(30)  編輯  收藏 所屬分類: 數(shù)據(jù)庫(kù)

          評(píng)論

          # re: mysql存儲(chǔ)過程學(xué)習(xí)及java調(diào)用存儲(chǔ)過程 2008-07-21 16:33 guest
          好,頂一個(gè)  回復(fù)  更多評(píng)論
            

          # re: mysql存儲(chǔ)過程學(xué)習(xí)及java調(diào)用存儲(chǔ)過程 2008-08-28 09:55 macguffin
          不錯(cuò),頂一個(gè)  回復(fù)  更多評(píng)論
            

          # re: mysql存儲(chǔ)過程學(xué)習(xí)及java調(diào)用存儲(chǔ)過程 2008-09-03 14:14 huihii
          些的什么鳥啊,都不好使
          垃圾

            回復(fù)  更多評(píng)論
            

          # re: mysql存儲(chǔ)過程學(xué)習(xí)及java調(diào)用存儲(chǔ)過程 2008-09-03 16:24 枯寬
          @huihii
          不好使那你就閃唄,只有垃圾才會(huì)罵別人垃圾  回復(fù)  更多評(píng)論
            

          # re: mysql存儲(chǔ)過程學(xué)習(xí)及java調(diào)用存儲(chǔ)過程 2008-09-04 16:39 huihii
          無(wú)恥鳥人!  回復(fù)  更多評(píng)論
            

          # re: mysql存儲(chǔ)過程學(xué)習(xí)及java調(diào)用存儲(chǔ)過程 2008-09-05 09:56 支持樓主
          @huihii
          真鄙視樓上的,如果你是個(gè)高手的話,我想你也不會(huì)去罵一個(gè)菜鳥,還會(huì)罵完隔一天又跑回來(lái)罵。說你是鳥人,還給你高帽子呢  回復(fù)  更多評(píng)論
            

          # re: mysql存儲(chǔ)過程學(xué)習(xí)及java調(diào)用存儲(chǔ)過程[未登錄] 2008-09-09 13:33 chen
          不是不好使,是你沒有看明白樓上寫的這些是什么意思,看來(lái)你對(duì)mysql不是太熟悉呀,好好學(xué)學(xué)吧  回復(fù)  更多評(píng)論
            

          # re: mysql存儲(chǔ)過程學(xué)習(xí)及java調(diào)用存儲(chǔ)過程 2008-09-22 19:28 sigua
          偶是入門級(jí)別的水平
          看了挺受用的
          多謝分享  回復(fù)  更多評(píng)論
            

          # re: mysql存儲(chǔ)過程學(xué)習(xí)及java調(diào)用存儲(chǔ)過程 2008-10-20 13:01 zhyt710
          很好  回復(fù)  更多評(píng)論
            

          # re: mysql存儲(chǔ)過程學(xué)習(xí)及java調(diào)用存儲(chǔ)過程 2008-12-10 10:40 靜児
          我剛剛?cè)腴T,正好遇到MySql的問題,看過了蠻好的,不過,樓主,為什么我在Java里面調(diào)用時(shí),照著你的方法做的卻還是出錯(cuò)了啊?5555555  回復(fù)  更多評(píng)論
            

          # re: mysql存儲(chǔ)過程學(xué)習(xí)及java調(diào)用存儲(chǔ)過程 2008-12-10 13:53 枯寬
          @靜児
          哪里出問題了呢??  回復(fù)  更多評(píng)論
            

          # re: mysql存儲(chǔ)過程學(xué)習(xí)及java調(diào)用存儲(chǔ)過程 2008-12-10 15:19 靜児
          @枯寬
          一直報(bào)錯(cuò):hahad = java.sql.SQLException: Callable statments not supported.
          ex : null  回復(fù)  更多評(píng)論
            

          # re: mysql存儲(chǔ)過程學(xué)習(xí)及java調(diào)用存儲(chǔ)過程 2008-12-10 15:20 靜児
          樓主,我現(xiàn)在想要實(shí)現(xiàn)一個(gè)功能,你能不能幫我看看啊?  回復(fù)  更多評(píng)論
            

          # re: mysql存儲(chǔ)過程學(xué)習(xí)及java調(diào)用存儲(chǔ)過程 2008-12-10 15:32 枯寬

          @靜児
          你的mysql什么版本的?  回復(fù)  更多評(píng)論
            

          # re: mysql存儲(chǔ)過程學(xué)習(xí)及java調(diào)用存儲(chǔ)過程 2008-12-10 15:34 靜児
          是mysql-5.0.51a的  回復(fù)  更多評(píng)論
            

          # re: mysql存儲(chǔ)過程學(xué)習(xí)及java調(diào)用存儲(chǔ)過程 2008-12-10 15:38 靜児
          @枯寬
          我本來(lái)是把自己想要實(shí)現(xiàn)的功能照你的方法寫的,但是一直報(bào)錯(cuò),所以后來(lái)就干脆把你建的存儲(chǔ)過程和所有的Java代碼都執(zhí)行了一次,可是還是不對(duì)啊,不知道到底怎么回事?  回復(fù)  更多評(píng)論
            

          # re: mysql存儲(chǔ)過程學(xué)習(xí)及java調(diào)用存儲(chǔ)過程 2008-12-10 15:52 枯寬
          @靜児
          你用mysql控制臺(tái)操作有問題嗎?

          沒有的話,那你的mysql的驅(qū)動(dòng)包匹配嗎?我的那些例子都是很簡(jiǎn)單,我都是成功運(yùn)行了的,根據(jù)“Callable statments not supported. ”很有可能你的驅(qū)動(dòng)包沒有CallableStatement這個(gè)類,確定有沒有先  回復(fù)  更多評(píng)論
            

          # re: mysql存儲(chǔ)過程學(xué)習(xí)及java調(diào)用存儲(chǔ)過程 2008-12-10 16:01 靜児
          @枯寬
          哦,謝謝樓主,那我先去看看!


          對(duì)了,樓主,你有QQ嗎?如果我有問題的話可以問問你嗎?  回復(fù)  更多評(píng)論
            

          # re: mysql存儲(chǔ)過程學(xué)習(xí)及java調(diào)用存儲(chǔ)過程 2008-12-10 16:19 靜児
          哦!但我現(xiàn)在的問題還是沒有解決啊,在mysql控制臺(tái)是沒問題的,都可以運(yùn)行,但是在Java里調(diào)用時(shí)就會(huì)出剛剛的那個(gè)錯(cuò)誤。  回復(fù)  更多評(píng)論
            

          # re: mysql存儲(chǔ)過程學(xué)習(xí)及java調(diào)用存儲(chǔ)過程[未登錄] 2009-05-13 15:26 lynn
          @靜児
          不知道現(xiàn)在回復(fù)你會(huì)不會(huì)太晚。
          把錯(cuò)誤打印出來(lái)就知道了

          sw.printStackTrace();  回復(fù)  更多評(píng)論
            

          # re: mysql存儲(chǔ)過程學(xué)習(xí)及java調(diào)用存儲(chǔ)過程[未登錄] 2009-06-03 15:24 haha
          haha,很好很強(qiáng)大  回復(fù)  更多評(píng)論
            

          # re: mysql存儲(chǔ)過程學(xué)習(xí)及java調(diào)用存儲(chǔ)過程[未登錄] 2009-06-03 15:28 test
          能否顯示?


          <tr></table><td></tr>  回復(fù)  更多評(píng)論
            

          # re: mysql存儲(chǔ)過程學(xué)習(xí)及java調(diào)用存儲(chǔ)過程 2009-10-14 16:18 skyworld
          很好,謝謝啦!  回復(fù)  更多評(píng)論
            

          # re: mysql存儲(chǔ)過程學(xué)習(xí)及java調(diào)用存儲(chǔ)過程 2010-10-17 01:15 java學(xué)習(xí)生
          講解很明白 看懂了 ,,,
          說的有點(diǎn)麻煩額

          在java中調(diào)用存儲(chǔ)過程大概步驟
          1連接上數(shù)據(jù)庫(kù) 關(guān)鍵字Connection
          2.傳sql 來(lái)調(diào)用存儲(chǔ)過程 關(guān)鍵字:CallableStatement
          注意 Statement PreparedStatement CallableStatement 三者區(qū)別
          即可
          3.完啦
          注意 不用的Statement調(diào)用的方法
          CallableStatement需要的參數(shù)
          以及最后的關(guān)閉順序 ...


            回復(fù)  更多評(píng)論
            

          # re: mysql存儲(chǔ)過程學(xué)習(xí)及java調(diào)用存儲(chǔ)過程 2011-05-09 11:20 劉盼
          說得好,別理那些看不懂的菜鳥。  回復(fù)  更多評(píng)論
            

          # re: mysql存儲(chǔ)過程學(xué)習(xí)及java調(diào)用存儲(chǔ)過程[未登錄] 2011-06-14 21:14 aa
          不錯(cuò),些的不錯(cuò),適合初學(xué)者,我都運(yùn)行了,謝謝。  回復(fù)  更多評(píng)論
            

          # re: mysql存儲(chǔ)過程學(xué)習(xí)及java調(diào)用存儲(chǔ)過程 2012-03-16 18:03 sad
          知道為什么,啊
          @靜児
            回復(fù)  更多評(píng)論
            

          # re: mysql存儲(chǔ)過程學(xué)習(xí)及java調(diào)用存儲(chǔ)過程 2012-10-10 11:22 靜児
          再來(lái)留個(gè)腳印  回復(fù)  更多評(píng)論
            

          # re: mysql存儲(chǔ)過程學(xué)習(xí)及java調(diào)用存儲(chǔ)過程[未登錄] 2013-09-06 14:49 小魚
          是個(gè)入門的好例子,我順利的跑通了,只有菜鳥才會(huì)罵  回復(fù)  更多評(píng)論
            

          # re: mysql存儲(chǔ)過程學(xué)習(xí)及java調(diào)用存儲(chǔ)過程[未登錄] 2014-02-21 12:01 linkin
          不錯(cuò),學(xué)習(xí)了  回復(fù)  更多評(píng)論
            


          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 万安县| 灵石县| 柳江县| 威远县| 尤溪县| 陆丰市| 怀集县| 工布江达县| 安宁市| 会理县| 阳原县| 大同县| 双江| 尼玛县| 佛冈县| 泌阳县| 隆德县| 文水县| 遂溪县| 福安市| 莫力| 英德市| 黄大仙区| 乐至县| 彰武县| 广南县| 山西省| 古蔺县| 繁峙县| 高淳县| 东源县| 白水县| 莫力| 喀喇沁旗| 松江区| 金坛市| 星子县| 鹰潭市| 静安区| 子长县| 定日县|