MySQL 저장 프로 세 스 학습 및 자바 에서 의 호출

5007 단어 자바sqlmysqljdbc
저장 프로 세 스 를 사용 하 는 장점 은 말 하지 않 겠 습 니 다. 다음은 저장 프로 세 스 의 사용 을 간략하게 말씀 드 리 겠 습 니 다.
 
1. 우선, 다음 자바 코드 의 테스트 에 사용 할 새 표를 만 듭 니 다.
 
create table a 
(
	id int(10) not null,
	name varchar(20) not null

)ENGINE=MyISAM DEFAULT CHARSET=utf8;

 
2. 표 에 데 이 터 를 삽입 하 다.
 
insert into a ( `id`, `name` ) values ('1', 'best');
insert into a ( `id`, `name` ) values ('2', 'great');
insert into a ( `id`, `name` ) values ('3', 'china');
insert into a ( `id`, `name` ) values ('4', 'beijing');

 
3. MySQL 의 기본 줄 바 꿈 문 자 를 수정 합 니 다. ";"\#\# "입 니 다.
 
 
delimiter ##

 
4. 출력 매개 변 수 를 가 진 저장 과정 을 만 듭 니 다.
 
create procedure hello(out num int)
begin
select Max(id) into num from a;
end##

 
5. 두 개의 출력 매개 변 수 를 가 진 저장 과정 을 만 듭 니 다.
 
create procedure hello2(out num int, out str varchar(20))
begin
select Max(id) into num from a;
select name from a where a.id = num into str;
end##

 
6. MySQL 의 줄 바 꿈 자 를 ";"로 수정 합 니 다.
 
delimiter ;

 
7. 자바 프로그램의 호출.
 
package cn.lifx.util.procedure;

import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Types;

public class Test 
{
	String url = "jdbc:mysql://127.0.0.1:3306/test"; 
    String name = "root";
    String password = "china";
    
    public static void main(String[] args)
    {
        Test test = new Test();
        
        test.proc();
        
        test.proc2();
    }
    
    public Connection getConnection() 
    {
        Connection con = null;
        
        try
        {
            Class.forName("com.mysql.jdbc.Driver");
            
            con = DriverManager.getConnection(url, name, password);
            
        }catch(Exception e){ 
        	e.printStackTrace();
        }
        
        return con;
    }
    
    public void proc()
    {
        Connection conn = getConnection();
        CallableStatement stmt = null;
        
        try
        {
            stmt = conn.prepareCall("{call hello(?)}");    
            stmt.registerOutParameter(1, Types.INTEGER);
            stmt.execute();
            
            int i = stmt.getInt(1);
            
            System.out.println(i);
            
        }catch(Exception e){
            e.printStackTrace();
            
        }finally
        {
            try 
            {
                stmt.close();
                conn.close();
                
            }catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
    
    public void proc2()
    {
        Connection conn = getConnection();
        CallableStatement stmt = null;
        
        try
        {
            stmt = conn.prepareCall("{call hello2(?, ?)}");    
            stmt.registerOutParameter(1, Types.INTEGER);
            stmt.registerOutParameter(2, Types.VARCHAR);
            stmt.execute();
            
            int i = stmt.getInt(1);
            String str = stmt.getString(2);
            
            System.out.println(i + " " + str);
            
        }catch(Exception e){
            e.printStackTrace();
            
        }finally
        {
            try 
            {
                stmt.close();
                conn.close();
                
            }catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
}	

 
8. 출력 결 과 는:
 
4
4 beijing

 
 
아래 링크 는 이 과정 들 이 MySQL 의 CMD 명령 행 에서 실행 되 는 과정 입 니 다.
 
http://dl.iteye.com/upload/picture/pic/44745/31622578-8500-3019-b6f2-dc3858cba641.jpg
 
http://dl.iteye.com/upload/picture/pic/44747/e3e5cc97-1ab3-363b-aacc-6850b71c48d7.jpg

좋은 웹페이지 즐겨찾기