有才华的人,别忘记给滋润你的那块土壤施肥

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  28 随笔 :: 5 文章 :: 147 评论 :: 0 Trackbacks
      工作中一直都是用swing,很少接触数据库,最近事少就帮着把公司服务器用csv存储用户资料信息,转移到mysql中去存储,才得以学习下mysql的存储过程。
      首先在mysql中练习下存储过程的小例子:   
mysql> delimiter //
mysql
> create procedure hello()
    
-> begin
    
-> select 'It is not a HelloWorld';
    
-> end
    
-> //
Query OK, 
0 rows affected (0.01 sec)
其中“delimiter //”的意思是定义结束符号为“//”,以此来替换mysql中的“;”
在mysql中查询上面的过程hello():
mysql> call hello()//
+------------------------+
| It is not a HelloWorld |
+------------------------+
| It is not a HelloWorld |
+------------------------+
1 row in set (0.00 sec)
建立一个简单的测试用表:
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中插入一些初始化的数据:
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)
现在简历一个向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代码用来调用MySQL的存储过程:
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 阅读(32240) 评论(30)  编辑  收藏 所属分类: 数据库

评论

# re: mysql存储过程学习及java调用存储过程 2008-07-21 16:33 guest
好,顶一个  回复  更多评论
  

# re: mysql存储过程学习及java调用存储过程 2008-08-28 09:55 macguffin
不错,顶一个  回复  更多评论
  

# re: mysql存储过程学习及java调用存储过程 2008-09-03 14:14 huihii
些的什么鸟啊,都不好使
垃圾

  回复  更多评论
  

# re: mysql存储过程学习及java调用存储过程 2008-09-03 16:24 枯宽
@huihii
不好使那你就闪呗,只有垃圾才会骂别人垃圾  回复  更多评论
  

# re: mysql存储过程学习及java调用存储过程 2008-09-04 16:39 huihii
无耻鸟人!  回复  更多评论
  

# re: mysql存储过程学习及java调用存储过程 2008-09-05 09:56 支持楼主
@huihii
真鄙视楼上的,如果你是个高手的话,我想你也不会去骂一个菜鸟,还会骂完隔一天又跑回来骂。说你是鸟人,还给你高帽子呢  回复  更多评论
  

# re: mysql存储过程学习及java调用存储过程[未登录] 2008-09-09 13:33 chen
不是不好使,是你没有看明白楼上写的这些是什么意思,看来你对mysql不是太熟悉呀,好好学学吧  回复  更多评论
  

# re: mysql存储过程学习及java调用存储过程 2008-09-22 19:28 sigua
偶是入门级别的水平
看了挺受用的
多谢分享  回复  更多评论
  

# re: mysql存储过程学习及java调用存储过程 2008-10-20 13:01 zhyt710
很好  回复  更多评论
  

# re: mysql存储过程学习及java调用存储过程 2008-12-10 10:40 静児
我刚刚入门,正好遇到MySql的问题,看过了蛮好的,不过,楼主,为什么我在Java里面调用时,照着你的方法做的却还是出错了啊?5555555  回复  更多评论
  

# re: mysql存储过程学习及java调用存储过程 2008-12-10 13:53 枯宽
@静児
哪里出问题了呢??  回复  更多评论
  

# re: mysql存储过程学习及java调用存储过程 2008-12-10 15:19 静児
@枯宽
一直报错:hahad = java.sql.SQLException: Callable statments not supported.
ex : null  回复  更多评论
  

# re: mysql存储过程学习及java调用存储过程 2008-12-10 15:20 静児
楼主,我现在想要实现一个功能,你能不能帮我看看啊?  回复  更多评论
  

# re: mysql存储过程学习及java调用存储过程 2008-12-10 15:32 枯宽

@静児
你的mysql什么版本的?  回复  更多评论
  

# re: mysql存储过程学习及java调用存储过程 2008-12-10 15:34 静児
是mysql-5.0.51a的  回复  更多评论
  

# re: mysql存储过程学习及java调用存储过程 2008-12-10 15:38 静児
@枯宽
我本来是把自己想要实现的功能照你的方法写的,但是一直报错,所以后来就干脆把你建的存储过程和所有的Java代码都执行了一次,可是还是不对啊,不知道到底怎么回事?  回复  更多评论
  

# re: mysql存储过程学习及java调用存储过程 2008-12-10 15:52 枯宽
@静児
你用mysql控制台操作有问题吗?

没有的话,那你的mysql的驱动包匹配吗?我的那些例子都是很简单,我都是成功运行了的,根据“Callable statments not supported. ”很有可能你的驱动包没有CallableStatement这个类,确定有没有先  回复  更多评论
  

# re: mysql存储过程学习及java调用存储过程 2008-12-10 16:01 静児
@枯宽
哦,谢谢楼主,那我先去看看!


对了,楼主,你有QQ吗?如果我有问题的话可以问问你吗?  回复  更多评论
  

# re: mysql存储过程学习及java调用存储过程 2008-12-10 16:19 静児
哦!但我现在的问题还是没有解决啊,在mysql控制台是没问题的,都可以运行,但是在Java里调用时就会出刚刚的那个错误。  回复  更多评论
  

# re: mysql存储过程学习及java调用存储过程[未登录] 2009-05-13 15:26 lynn
@静児
不知道现在回复你会不会太晚。
把错误打印出来就知道了

sw.printStackTrace();  回复  更多评论
  

# re: mysql存储过程学习及java调用存储过程[未登录] 2009-06-03 15:24 haha
haha,很好很强大  回复  更多评论
  

# re: mysql存储过程学习及java调用存储过程[未登录] 2009-06-03 15:28 test
能否显示?


<tr></table><td></tr>  回复  更多评论
  

# re: mysql存储过程学习及java调用存储过程 2009-10-14 16:18 skyworld
很好,谢谢啦!  回复  更多评论
  

# re: mysql存储过程学习及java调用存储过程 2010-10-17 01:15 java学习生
讲解很明白 看懂了 ,,,
说的有点麻烦额

在java中调用存储过程大概步骤
1连接上数据库 关键字Connection
2.传sql 来调用存储过程 关键字:CallableStatement
注意 Statement PreparedStatement CallableStatement 三者区别
即可
3.完啦
注意 不用的Statement调用的方法
CallableStatement需要的参数
以及最后的关闭顺序 ...


  回复  更多评论
  

# re: mysql存储过程学习及java调用存储过程 2011-05-09 11:20 刘盼
说得好,别理那些看不懂的菜鸟。  回复  更多评论
  

# re: mysql存储过程学习及java调用存储过程[未登录] 2011-06-14 21:14 aa
不错,些的不错,适合初学者,我都运行了,谢谢。  回复  更多评论
  

# re: mysql存储过程学习及java调用存储过程 2012-03-16 18:03 sad
知道为什么,啊
@静児
  回复  更多评论
  

# re: mysql存储过程学习及java调用存储过程 2012-10-10 11:22 静児
再来留个脚印  回复  更多评论
  

# re: mysql存储过程学习及java调用存储过程[未登录] 2013-09-06 14:49 小鱼
是个入门的好例子,我顺利的跑通了,只有菜鸟才会骂  回复  更多评论
  

# re: mysql存储过程学习及java调用存储过程[未登录] 2014-02-21 12:01 linkin
不错,学习了  回复  更多评论
  


只有注册用户登录后才能发表评论。


网站导航:
博客园   IT新闻   Chat2DB   C++博客   博问