JDBC返回生成的主键

https://www.tomhuwd.com/core-content-4320.html

思路:

通过一个重载的prepareStatement(sql,int);来设置是否返回由数据库生成的主键

然后再使用ps.getGenereatedKeys()来获得包含主键的结果集

import java.io.FileInputStream;

import java.io.OutputStream;

import java.sql.Blob;

import java.sql.Connection;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.Statement;

public class ReturnPrimaryKey {

public static void main(String[] args) throws Exception {

write("d:/t.png");

}

public static void write(String dir)throws Exception{

String sql="insert into pic values(null,?)";

try(Connection conn=JdbcUtil.getConnection();

PreparedStatement ps=conn.prepareStatement(sql,Statement.RETURN_GENERATED_KEYS);){

//在此处设置是否返回由数据库生成的主键然后用ps.getGeneratedKeys()获得主键的结果集

Blob blob= conn.createBlob();

OutputStream os=blob.setBinaryStream(1);

FileInputStream fis=new FileInputStream(dir);

byte[]bs=new byte[100];

int size=-1;

while((size=fis.read(bs))!=-1) {

os.write(bs,0,size);

}

fis.close();

os.close();

ps.setBlob(1, blob);

ps.execute();

//获得生成的主键

ResultSet keys=ps.getGeneratedKeys();

keys.next();

System.out.println("生成的主键是:"+keys.getInt(1));

System.out.println("完成");

}

}

}

你可能感兴趣的:(JDBC返回生成的主键)