JDBC获得数据库表中的auto_increment类主键
Posted 浮生缘,半生梦
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JDBC获得数据库表中的auto_increment类主键相关的知识,希望对你有一定的参考价值。
在对表进行插入数据时,如果主键是自增长类型,那么我们可以不对主键那一列进行赋值,但是有时候,这个主键恰好是别的表的外键,那么我们需要知道这次自增长的值,当然我们可以执行一次查询语句,根据你插入的信息当条件,简便方法就是在执行插入sql语句后,可以直接返回该主键。
package jdbc_preparement; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.InputStream; import java.io.OutputStream; import java.sql.Blob; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.sql.Statement; public class text_preparestartment { public static void main(String[] args) { // TODO Auto-generated method stub Connection con=simplecon.getConnection(); //创建JDBC连接,用封装好的自定义类 String sql="insert into t_user values(null,?,?,null);";try { PreparedStatement ps=con.prepareStatement(sql,Statement.RETURN_GENERATED_KEYS); //多一个参数,表示需要返回主键 ps.setString(1, "mike"); ps.setString(2, "4399"); ps.execute(); ResultSet re=ps.getGeneratedKeys(); //返回主键 re.next(); int n=re.getInt(1); System.out.println("自然增长的序号为"+n); //输出主键 simplecon.close(re); simplecon.close(ps); simplecon.close(con); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } } class simplecon { static Connection con; static Connection getConnection() { try{ con=DriverManager.getConnection("jdbc:mysql://localhost:3306/test","数据库用户名","数据库密码"); }catch(SQLException e){ e.printStackTrace(); } return con; } static void close(AutoCloseable a) { try { a.close(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
以上是关于JDBC获得数据库表中的auto_increment类主键的主要内容,如果未能解决你的问题,请参考以下文章
javaWeb_JDBC_利用反射以及JDBC元数据编写通用的查询方法
使用 JDBC 连接位于同一服务器上不同数据库中的 2 个 Oracle 表中的数据