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("完成");
}
}
}
网友评论