JDBC中新增数据获取主键的方法

JDBC中新增数据获取主键的方法

Statement接口有一个方法:int executeUpdate(String sql, int autoGeneratedKeys) throwsSQLException。执行给定的 SQL 语句,并用给定标志通知驱动程序由此 Statement 生成的自动生成键是否可用于获取。如果该 SQL 语句不是 INSERT 语句,或者不是可以返回自动生成键的 SQL 语句(这些语句的列表是特定于供应商的),则驱动程序将忽略该标志。autoGeneratedKeys - 指示自动生成的键是否可用于获取的标志;以下常量之一:Statement.RETURN_GENERATED_KEYS

Statement.NO_GENERATED_KEYS

使用statement实现类对象调用executeUpdate方法,传入的第二个参数(常量字段值)表示是否需要获取自动生成的主键,如果传入的是Statement.RETURN_GENERATED_KEYS(表示1,即也可以传入1),表示需要返回主键。如果不需要返回,可以传入Statement.NO_GENERATED_KEYS(表示0,也可以传0),不需要返回主键时,我们也可以直接用单参的executeUpdate方法。一般我们都传入常量值字段,便于我们在阅读代码时直到该参数的含义,如果直接传入0或1,在阅读代码时可能不知道其含义。

执行完execute语句之后,在使用Statement的getGenerateKeys()获取结果集。

ResultSetgetGeneratedKeys() throws SQLException:获取由于执行此 Statement 对象而创建的所有自动生成的键。如果此 Statement 对象没有生成任何键,则返回空的 ResultSet 对象。

获得的结果集就是主键的结果集,就一列内容,可以通过next方法遍历得到set。getString(1)获取主键值。

代码示例:

createStatement的方法执行语句:

Statementps = c.createStatement();

intflag = ps.executeUpdate("insert into student(sname,birthday,class)values('xiaohua','2003-05-05','vr')",Statement.RETURN_GENERATED_KEYS);

       //获取主键  ResultSet getGeneratedKeys()

       ResultSet set = ps.getGeneratedKeys();//返回主键结果集

       while(set.next()){//遍历结果集(只有一列)

           System.out.println(set.getInt(1));//得到第一列的值

       }

prepareStatement的方法执行语句:

PreparedStatementps = null;

ps =c.prepareStatement(sql,Statement.RETURN_GENERATED_KEYS);

ResultSetset1 = ps.getGeneratedKeys();

while(set1.next()){

           System.out.println(set1.getString(1));

           }

 

Types类:

publicclass Typesextends Object:定义用于标识一般 SQL 类型(称为 JDBC 类型)的常量的类。

常量字段值:

猜你喜欢

转载自blog.csdn.net/QYHuiiQ/article/details/80293043