Heim > Datenbank > MySQL-Tutorial > mysql存储过程学习及java调用存储过程

mysql存储过程学习及java调用存储过程

WBOY
Freigeben: 2016-06-07 15:02:02
Original
1144 Leute haben es durchsucht

存储过程虽然经常听到,但是我遇到的项目还没有使用过,比较郁闷,只能选择自己入门了,也顺便与大家分享,希望大家也能如愿,呵呵。 首先我用的环境是window xpmysql5,这个大家应该都有的,没有的安装一下吧。好装好了,不要忘记将mysql.exe的路径目录放入

存储过程虽然经常听到,但是我遇到的项目还没有使用过,比较郁闷,只能选择自己入门了,也顺便与大家分享,希望大家也能如愿,呵呵。

首先我用的环境是window xp+mysql5,这个大家应该都有的,没有的安装一下吧。好装好了,不要忘记将mysql.exe的路径目录放入环境变量path中,这样在cmd里输入以下命令就可以进入mysql的命令行模式:mysql -u root -p  -> mysql密码即可。

mysql> delimiter //
mysql> create procedure hello()
    -> begin
    -> select 'It is not a HelloWorld';
    -> end
    -> //
Query OK, 0 rows affected (0.01 sec)
Nach dem Login kopieren

delimiter // 是将结束符由默认的;换成了//,如果不这样select......语句就会导致上面的代码出错,不信你可以试一下哈,呵呵。接着在mysql中查询上面的过程hello():

mysql> call hello()//
+------------------------+
| It is not a HelloWorld |
+------------------------+
| It is not a HelloWorld |
+------------------------+
1 row in set (0.00 sec)
Nach dem Login kopieren

我们再来一个好点的入门小实例吧
mysql> DROP TABLE IF EXISTS `userinfo`.`mapping`;
    -> CREATE TABLE  `userinfo`.`mapping` (
    ->   `cFieldID` smallint(5) unsigned NOT NULL,
    ->   `cFieldName` varchar(30) NOT NULL,
    ->   PRIMARY KEY  (`cFieldID`)
    -> ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    -> //
Query OK, 0 rows affected (0.14 sec)
Nach dem Login kopieren
想表中load值进空表  文件为:

filed.txt

1,MarketValue
2,P/L
3,EName
4,Nominal
5,Chg
Nach dem Login kopieren


mysql> load data infile 'd:\\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)
Nach dem Login kopieren
现在简历一个向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
    ->  //
Nach dem Login kopieren
查找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       |
+----------+-------------+
Nach dem Login kopieren
下面是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();
    }
}
Nach dem Login kopieren


在到MySQL中查询可看到插入一条新的记录
Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage