存储过程是干什么的,自己百度,百度上讲的比我讲的好。为什么要用存储过程,这样可以提高效率。废话少说,直接上代码:
首先说一下语法:在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(); } } } }