关闭

获得数据库自动生成的主键与调用存储过程

发表于:2013-7-24 09:52

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:跃行者    来源:51Testing软件测试网采编

获取主键
 注:此参数仅对insert操作有效。
 public static void main(String[] args) throws SQLException {
  Connection conn = null;
  PreparedStatement st = null;
  ResultSet rs = null;
  try{
   conn = JdbcUtils.getConnection();
   String sql = "insert into test(name) values('aaa')";
   //出入Statement.RETURN_GENERATED_KEYS参数就是要返回生成主键,默认是返回的,写上     为了以后换成别的数据库也行。
   st = conn.prepareStatement(sql,Statement.RETURN_GENERATED_KEYS);
   st.executeUpdate();
   //调用getGeneratedKeys方法得到生成的键
   rs = st.getGeneratedKeys();
   if(rs.next()){
    //获取主键
    System.out.println(rs.getInt(1));
   }
  }finally{
   JdbcUtils.release(conn, st, rs);
  }
 }

  调用存储过程

  在MySQL中创建存储过程

delimiter $$
CREATE PROCEDURE demoSp(IN inputParamVARCHAR(255), INOUT inOutParam varchar(255))
BEGIN
SELECT CONCAT('zyxw---', inputParam) intoinOutParam;
END $$
delimiter ;

//调用
public class Demo {
 public static void main(String[] args) throws SQLException {
  Connection conn = null;
  CallableStatement  st = null;
  ResultSet rs = null;
  try{
   conn = JdbcUtils.getConnection();
   //调用存储过程
   st = conn.prepareCall("{call demoSp(?,?)}");
   //替换占位符
   st.setString(1, "aaaaa");
   //第二个为类型
   st.registerOutParameter(2, Types.VARCHAR);
   st.execute();
   System.out.println(st.getString(2));
  }finally{
   JdbcUtils.release(conn, st, rs);
  }
 }
}

21/212>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号