标签:获取 i++ 对象 nbsp 业务 state next ack 信息
JDBC_JDBC获取数据库自动生成主键值
1.意义:
  在操作比较复杂的数据库表以及相关信息的时候,我们需要获取一条记录中的主键值,以便于别的业务逻辑操作该条记录,那么这一个时候
  如果是数据库自己生成主键值,那么我们就有必要获取这一个主键值。
  
  
2.实现:
  使用重载的 prepareStatement(sql, flag)来生成 PreparedStatement 对象,并调用ResultSet rs = preparedStatement.getGeneratedKeys();
  在 ResultSet 中只有一列 GENERATED_KEY, 用于存放新生成的主键值.
3.代码实现
  public static void testGetKeyValue() {
		
		Connection connection = null;
		PreparedStatement preparedStatement = null;
		
		try {
			connection = JDBCTools.getConnection();
			String sql = "INSERT INTO student(studentName, age, nativePlace) VALUES(?,?,?)";
			//preparedStatement = connection.prepareStatement(sql);
			//使用重载的 prepareStatement(sql, flag) 
			//来生成 PreparedStatement 对象
			preparedStatement = connection.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);
			
			preparedStatement.setString(1, "刘备");
			preparedStatement.setInt(2, 12);
			preparedStatement.setString(3, "云南大理");
			
			preparedStatement.executeUpdate();
			
			//通过 getGeneratedKeys() 获取包含了新生成的主键的 ResultSet 对象
			//在 ResultSet 中只有一列 GENERATED_KEY, 用于存放新生成的主键值.
			ResultSet rs = preparedStatement.getGeneratedKeys();
			
			if(rs.next()){
				System.out.println(rs.getObject(1));
			}
			
			ResultSetMetaData rsmd = rs.getMetaData();
			for(int i = 0; i < rsmd.getColumnCount(); i++){
				System.out.println(rsmd.getColumnName(i + 1)); 
			}
			
		} catch (Exception e) {
			e.printStackTrace();
		} finally{
			JDBCTools.releaseDB(null, preparedStatement, connection);
		}
		
	}
javaWeb_JDBC_JDBC获取数据库自动生成的主键值
标签:获取 i++ 对象 nbsp 业务 state next ack 信息
原文地址:https://www.cnblogs.com/nwxayyf/p/10352548.html