在对表进行插入数据时,如果主键是自增长类型,那么我们可以不对主键那一列进行赋值,但是有时候,这个主键恰好是别的表的外键,那么我们需要知道这次自增长的值,当然我们可以执行一次查询语句,根据你插入的信息当条件,简便方法就是在执行插入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(); } } }
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 内存占用高分析
· .NET Core GC计划阶段(plan_phase)底层原理浅谈
· .NET开发智能桌面机器人:用.NET IoT库编写驱动控制两个屏幕
· 用纯.NET开发并制作一个智能桌面机器人:从.NET IoT入门开始
· 一个超经典 WinForm,WPF 卡死问题的终极反思
· 20250116 支付宝出现重大事故 有感
· 一个基于 Roslyn 和 AvalonEdit 的跨平台 C# 编辑器
· 2025 最佳免费商用文本转语音模型: Kokoro TTS
· 海康工业相机的应用部署不是简简单单!?
· 在 .NET Core中如何使用 Redis 创建分布式锁