1,程序预编译时,可在参数中传入返回的主键键值的参数,并在执行完预编译后取出主键值。
preparedStatement = connection.prepareStatement(sql,Statement.RETURN_GENERATED_KEYS);
ResultSet resultSet = preparedStatement.getGeneratedKeys();
2,存储过程中:
BEGIN
declare id int; //定义一个变量
insert into persons (name,sex,mobile) values(n,s,m); //执行一句插入语句
set id = @@identity;//把插入语句执行完后返回的主键值赋值给pid
update persons set picture = CONCAT('p',id,".png") where pid = id;//CONCAT连接几个字符或字符串
END
3,out输出参数
存储过程:
BEGIN
declare id int;//输出时无需在此处定义
insert into persons (name,sex,mobile) values(n,s,m); //执行一句插入语句
set id = @@identity;//把插入语句执行完后返回的主键值赋值给pid
update persons set picture = CONCAT('p',id,".png") where pid = id;//CONCAT连接几个字符或字符串
END
前台调用:
1,先注册输出参数
callableStatement.registerOutParameter(4,Type.INTEGER);//4表示预编译参数中第几个问号,Type.INTEGER表示输出参数的类型
2,取出参数的值
callableStatement.getInt("id");
4,输入输出参数:inout