加入收藏 | 设为首页 | 会员中心 | 我要投稿 商洛站长网 (https://www.0914zz.com/)- AI应用、CDN、边缘计算、云计算、物联网!
当前位置: 首页 > 数据库 > MySql > 正文

mysql 获取自增id的值的方法

发布时间:2020-09-01 10:28:50 所属栏目:MySql 来源:互联网
导读:原生jdbc方式:Statement.getGeneratedKeys()示例:Statement stmt = null;ResultSet rs = null;try {//// Create a Statement instance that we can use for// normal result sets assuming you have a// Connection conn to a MySQL database already// ava

原生jdbc方式:

示例:

Statement stmt = = <span style="color: #0000ff;">try<span style="color: #000000;"> {

</span><span style="color: #008000;"&gt;//</span>
<span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt; Create a Statement instance that we can use for
</span><span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt; 'normal' result sets assuming you have a
</span><span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt; Connection 'conn' to a MySQL database already
</span><span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt; available</span>

<span style="color: #000000;">
stmt =<span style="color: #000000;"> conn.createStatement();

</span><span style="color: #008000;"&gt;//</span>
<span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt; Issue the DDL queries for the table for this example
</span><span style="color: #008000;"&gt;//

<span style="color: #000000;">
stmt.executeUpdate("DROP TABLE IF EXISTS autoIncTutorial"<span style="color: #000000;">);
stmt.executeUpdate(
"CREATE TABLE autoIncTutorial ("

  • "priKey INT NOT NULL AUTO_INCREMENT,"
  • "dataField VARCHAR(64),PRIMARY KEY (priKey))"<span style="color: #000000;">);
</span><span style="color: #008000;"&gt;//</span>
<span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt; Insert one row that will generate an AUTO INCREMENT
</span><span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt; key in the 'priKey' field
</span><span style="color: #008000;"&gt;//

<span style="color: #000000;">
stmt.executeUpdate(
"INSERT INTO autoIncTutorial (dataField) "

  • "values ('Can I Get the Auto Increment Field?')"<span style="color: #000000;">,Statement.RETURN_GENERATED_KEYS);
</span><span style="color: #008000;"&gt;//</span>
<span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt; Example of using Statement.getGeneratedKeys()
</span><span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt; to retrieve the value of an auto-increment
</span><span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt; value
</span><span style="color: #008000;"&gt;//


<span style="color: #0000ff;">int autoIncKeyFromApi = -1<span style="color: #000000;">;

rs </span>=<span style="color: #000000;"&gt; stmt.getGeneratedKeys();

</span><span style="color: #0000ff;"&gt;if</span><span style="color: #000000;"&gt; (rs.next()) {
    autoIncKeyFromApi </span>= rs.getInt(1<span style="color: #000000;"&gt;);
} </span><span style="color: #0000ff;"&gt;else</span><span style="color: #000000;"&gt; {

    </span><span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt; throw an exception from here</span>

<span style="color: #000000;"> }

System.out.println(</span>"Key returned from getGeneratedKeys():"
    +<span style="color: #000000;"&gt; autoIncKeyFromApi);

} <span style="color: #0000ff;">finally<span style="color: #000000;"> {

</span><span style="color: #0000ff;"&gt;if</span> (rs != <span style="color: #0000ff;"&gt;null</span><span style="color: #000000;"&gt;) {
    </span><span style="color: #0000ff;"&gt;try</span><span style="color: #000000;"&gt; {
        rs.close();
    } </span><span style="color: #0000ff;"&gt;catch</span><span style="color: #000000;"&gt; (SQLException ex) {
        </span><span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt; ignore</span>

<span style="color: #000000;"> }
}

</span><span style="color: #0000ff;"&gt;if</span> (stmt != <span style="color: #0000ff;"&gt;null</span><span style="color: #000000;"&gt;) {
    </span><span style="color: #0000ff;"&gt;try</span><span style="color: #000000;"&gt; {
        stmt.close();
    } </span><span style="color: #0000ff;"&gt;catch</span><span style="color: #000000;"&gt; (SQLException ex) {
        </span><span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt; ignore</span>

<span style="color: #000000;"> }
}
}

也有使用

Statement stmt = = <span style="color: #0000ff;">try<span style="color: #000000;"> {

</span><span style="color: #008000;"&gt;//</span>
<span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt; Create a Statement instance that we can use for
</span><span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt; 'normal' result sets.</span>

<span style="color: #000000;">
stmt =<span style="color: #000000;"> conn.createStatement();

</span><span style="color: #008000;"&gt;//</span>
<span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt; Issue the DDL queries for the table for this example
</span><span style="color: #008000;"&gt;//

<span style="color: #000000;">
stmt.executeUpdate("DROP TABLE IF EXISTS autoIncTutorial"<span style="color: #000000;">);
stmt.executeUpdate(
"CREATE TABLE autoIncTutorial ("

  • "priKey INT NOT NULL AUTO_INCREMENT,PRIMARY KEY (priKey))"<span style="color: #000000;">);
</span><span style="color: #008000;"&gt;//</span>
<span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt; Insert one row that will generate an AUTO INCREMENT
</span><span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt; key in the 'priKey' field
</span><span style="color: #008000;"&gt;//

<span style="color: #000000;">
stmt.executeUpdate(
"INSERT INTO autoIncTutorial (dataField) "

  • "values ('Can I Get the Auto Increment Field?')"<span style="color: #000000;">);
</span><span style="color: #008000;"&gt;//</span>
<span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt; Use the MySQL LAST_INSERT_ID()
</span><span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt; function to do the same thing as getGeneratedKeys()
</span><span style="color: #008000;"&gt;//


<span style="color: #0000ff;">int autoIncKeyFromFunc = -1<span style="color: #000000;">;
rs = stmt.executeQuery("SELECT LAST_INSERT_ID()"<span style="color: #000000;">);

</span><span style="color: #0000ff;"&gt;if</span><span style="color: #000000;"&gt; (rs.next()) {
    autoIncKeyFromFunc </span>= rs.getInt(1<span style="color: #000000;"&gt;);
} </span><span style="color: #0000ff;"&gt;else</span><span style="color: #000000;"&gt; {
    </span><span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt; throw an exception from here</span>

(编辑:商洛站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读