JAVA中三种取得自动生成主键的方法

JAVA中三种获得自动生成主键的方法
package test;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
/**
 * 三种获得自动生成主键的方法。
 * 
 */
public  class  TestGetPK 
{
	public  static  void  main(String[] args) throws  Exception
	{
		Class.forName("com.gbase.jdbc.Driver" );
		String url = "jdbc:gbase://localhost/mytest" ;
		Connection con = DriverManager.getConnection(url, "root" , "111111" );

		System.out.println(getPK1(con));
		System.out.println(getPK2(con));
		System.out.println(getPK3(con));
	}
	/**
	 * 使用JDBC 3.0提供的 getGeneratedKeys。推荐使用
	 * 
	 * @param con
	 * @return
	 * @throws Exception
	 */
	public  static  long  getPK1(Connection con) throws  Exception
	{
		Statement stmt = con.createStatement();
		stmt.executeUpdate("INSERT INTO t_type (name) values ('张三')",
		Statement.RETURN_GENERATED_KEYS);
		
		int  autoIncKeyFromApi = -1 ;
		ResultSet rs = stmt.getGeneratedKeys();
		if  (rs.next())
		{
		  autoIncKeyFromApi = rs.getInt(1);
		}
		return  autoIncKeyFromApi;
	}
	/**
	 * 使用数据库自己的特殊SQL.
	 * 
	 * @param con
	 * @return
	 * @throws Exception
	 */
	public static long getPK2(Connection con) throws  Exception
	{
		Statement stmt = con.createStatement();
		stmt.executeUpdate("INSERT INTO t_type (name) values ('张三')",
		Statement.RETURN_GENERATED_KEYS);
		
		int autoIncKeyFromFunc = -1 ;
		ResultSet rs = stmt.executeQuery( "SELECT LAST_INSERT_ID()");
		if  (rs.next()) 
		{
			autoIncKeyFromFunc = rs.getInt(1);
		}
		return  autoIncKeyFromFunc;
	}

	/**
	 * 使用可更新的结果集。
	 * @param con
	 * @return
	 * @throws Exception
	 */
	public static long getPK3(Connection con) throws Exception
	{
		Statement stmt = con.createStatement(java.sql.ResultSet.TYPE_FORWARD_ONLY,
		java.sql.ResultSet.CONCUR_UPDATABLE);
		
		ResultSet rs = stmt.executeQuery("SELECT * FROM t_Type");
		rs.moveToInsertRow();
		rs.updateString("name", "AUTO INCREMENT here?");
		rs.insertRow();
		rs.last();
		int autoIncKeyFromRS = rs.getInt("id" );
		return autoIncKeyFromRS;
	}
}