获取主键 注:此参数仅对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); } } }
结果集的滚动
ResultSet提供了对结果集进行滚动的方法:
next():移动到下一行
Previous():移动到前一行
absolute(int row):移动到指定行
beforeFirst():移动resultSet的前面。
afterLast() :移动到resultSet的后面。
例:获取后一条数据
afterLast();
Previous();