码迷,mamicode.com
首页 > 数据库 > 详细

JDBC系列:(6)使用PreparedStatement获取自增长值

时间:2016-05-12 08:05:00      阅读:226      评论:0      收藏:0      [点我收藏+]

标签:generatedkeys   jdbc   preparedstatement   


T_Persons表是一个表示“人”的表。

T_Dogs表是一个表示“狗狗”的表,在T_Dogs表中有一个外键MasterId指向T_Persons表的主键Id。


package com.rk.db.f_auto_increment;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import com.rk.db.utils.JDBCUtil;

public class Demo01
{
	public static void main(String[] args)
	{
		Connection conn = null;
		PreparedStatement pstmt1 = null;
		PreparedStatement pstmt2 = null;
		ResultSet rs = null;
		try
		{
			String sql1 = "insert into T_Persons(UserName,Pwd) values(?,?)";
			String sql2 = "insert into T_Dogs(dName,MasterId) values(?,?)";
			//获得连接
			conn = JDBCUtil.getConnection();
			
			// 1、需要指定返回自增长标记
			pstmt1 = conn.prepareStatement(sql1,Statement.RETURN_GENERATED_KEYS);
			pstmt1.setString(1, "小红");
			pstmt1.setString(2, "password");			
			pstmt1.executeUpdate();
			
			// 2、得到返回的自增长字段
			int masterId = -1;
			rs = pstmt1.getGeneratedKeys();			
			if(rs.next())
			{
				masterId = rs.getInt(1);
			}
			
			// 3、使用返回的自增长字段
			pstmt2 = conn.prepareStatement(sql2);
			pstmt2.setString(1, "旺财");
			pstmt2.setInt(2, masterId);
			pstmt2.executeUpdate();
		}
		catch (SQLException e)
		{
			e.printStackTrace();
		}
		finally
		{
			JDBCUtil.closeQuietly(pstmt1);
			JDBCUtil.closeQuietly(pstmt2);
			JDBCUtil.closeQuietly(conn);
		}
	}
}




JDBC系列:(6)使用PreparedStatement获取自增长值

标签:generatedkeys   jdbc   preparedstatement   

原文地址:http://lsieun.blog.51cto.com/9210464/1772462

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!