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