JAVA如何调用mysql写的存储过程

存储过程是干什么的,自己百度,百度上讲的比我讲的好。为什么要用存储过程,这样可以提高效率。废话少说,直接上代码:

首先说一下语法:在mysql中写存储过程

DELIMITER $$

CREATE
    /*[DEFINER = { user | CURRENT_USER }]*/
    PROCEDURE `test`.`text_d`(in param1 varchar(10),in param2 varchar(20))
    /*LANGUAGE SQL
    | [NOT] DETERMINISTIC
    | { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }
    | SQL SECURITY { DEFINER | INVOKER }
    | COMMENT 'string'*/
    BEGIN
           insert into user (user_name,user_dept) values(param1,param2);
    END$$

DELIMITER ;

  上面就定义了一个存储过程,这个存储过程很简单,只是让大家看懂,据说,存储过程很复杂的。

  下面是java代码:

  

package jdbc_study;

import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.SQLException;

public class PreDuce {

	public static void main(String[] args) {
		
		
		//首先获得数据库的连接
		
		User user = new  User();
		
		user.setUsername("孙悟空");
		user.setUserdept("java方向");
		
		save(user);
		
		
		
	}
	
	public static  void save(User user) {
		//1:获得数据库的连接
		Connection conn = BaseDao.getConnection();
		
		//2:CallableStatement
		CallableStatement  proc = null;
		try {
			 proc= conn.prepareCall("{call text_c(?,?)}");
			 proc.setString(1, user.getUsername());
			 proc.setString(2, user.getUserdept());
			 proc.execute();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally {
			try {
				proc.close();
				conn.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		
	}
	
	
}

  

posted on 2015-09-19 20:40  airycode  阅读(1440)  评论(0编辑  收藏  举报

导航