当前位置: 首页 > wzjs >正文

昆明网建seo外包多少钱

昆明网建,seo外包多少钱,做网站真实收益,厦门b2b网站建设以下是使用 JDBC 插入数据并获取自动生成的主键(如 MySQL 的 AUTO_INCREMENT 或 Oracle 的序列) 的完整示例代码,包含详细注释: import java.sql.*;public class GeneratedKeysExample {// 数据库连接参数private static final St…

以下是使用 JDBC 插入数据并获取自动生成的主键(如 MySQL 的 AUTO_INCREMENT 或 Oracle 的序列) 的完整示例代码,包含详细注释:


import java.sql.*;public class GeneratedKeysExample {// 数据库连接参数private static final String URL = "jdbc:mysql://localhost:3306/mydatabase";private static final String USER = "root";private static final String PASSWORD = "your_password";public static void main(String[] args) {Connection conn = null;try {// 1. 加载数据库驱动Class.forName("com.mysql.cj.jdbc.Driver");// 2. 获取数据库连接conn = DriverManager.getConnection(URL, USER, PASSWORD);// 3. 定义插入语句(包含自增主键)String sql = "INSERT INTO users (name, email) VALUES (?, ?)";// 4. 创建 PreparedStatement 并启用返回生成的键try (PreparedStatement pstmt = conn.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS // 关键:启用生成键的返回)) {// 5. 设置参数pstmt.setString(1, "Alice");pstmt.setString(2, "alice@example.com");// 6. 执行插入操作int affectedRows = pstmt.executeUpdate();System.out.println("插入成功,影响行数:" + affectedRows);// 7. 获取生成的主键try (ResultSet generatedKeys = pstmt.getGeneratedKeys()) {if (generatedKeys.next()) {long userId = generatedKeys.getLong(1); // 获取第一列(主键)System.out.println("生成的用户ID:" + userId);} else {throw new SQLException("创建用户时未获取到主键!");}}}} catch (ClassNotFoundException e) {System.out.println("JDBC驱动未找到!");e.printStackTrace();} catch (SQLException e) {System.out.println("数据库操作失败!");e.printStackTrace();} finally {// 8. 关闭连接try {if (conn != null) conn.close();} catch (SQLException e) {e.printStackTrace();}}}
}

代码说明

1. 核心步骤
  1. 启用生成键返回
    prepareStatement() 中传入 Statement.RETURN_GENERATED_KEYS,告知 JDBC 需要返回生成的键。

  2. 执行插入并获取键

    • executeUpdate() 执行插入操作。
    • getGeneratedKeys() 返回包含生成键的 ResultSet
  3. 处理结果集

    • generatedKeys.next() 移动到第一条记录(假设每次插入一条)。
    • getLong(1) 获取第一列(主键列)的值。

2. 数据库表结构(MySQL 示例)
CREATE TABLE users (id BIGINT AUTO_INCREMENT PRIMARY KEY, -- 自增主键name VARCHAR(50),email VARCHAR(100)
);

关键注意事项

  1. 数据库支持

    • MySQL:使用 AUTO_INCREMENT 主键。
    • Oracle:需指定 RETURNING 子句或使用序列(代码需调整)。
    • PostgreSQL:支持 RETURNING 子句,但需调整 SQL 语法。
  2. 多行插入
    如果插入多行,getGeneratedKeys() 返回所有生成的键,需遍历 ResultSet

  3. 列索引
    generatedKeys.getLong(1) 中的 1 表示主键是结果集的第一列。若表有多个生成列,需根据列顺序调整。


扩展场景:Oracle 示例

Oracle 需要使用 RETURNING 子句和序列:

// Oracle 示例代码片段
String sql = "INSERT INTO users (id, name, email) " +"VALUES (user_seq.NEXTVAL, ?, ?) " +"RETURNING id INTO ?";
try (PreparedStatement pstmt = conn.prepareStatement(sql)) {pstmt.setString(1, "Alice");pstmt.setString(2, "alice@example.com");pstmt.registerOutParameter(3, OracleTypes.NUMBER); // 注册输出参数int rows = pstmt.executeUpdate();long userId = pstmt.getLong(3); // 通过输出参数获取主键
}

常见问题

Q1:为什么获取不到生成的键?
  • 原因:未在 prepareStatement() 中启用 RETURN_GENERATED_KEYS
  • 解决:确保代码中包含 Statement.RETURN_GENERATED_KEYS
Q2:如何处理批量插入的生成键?
// 批量插入示例
pstmt.addBatch(); // 添加多条数据
pstmt.executeBatch();// 获取所有生成的键
try (ResultSet keys = pstmt.getGeneratedKeys()) {while (keys.next()) {long id = keys.getLong(1);// 处理每个生成的键}
}

最佳实践

  1. 始终使用 try-with-resources:确保资源自动关闭。
  2. 验证返回结果:检查 ResultSet 是否有数据,避免空指针异常。
  3. 数据库兼容性测试:根据实际数据库调整 SQL 语法(如 Oracle 的序列)。

通过此示例,你可以轻松实现插入数据并获取自动生成的主键,适用于大多数关系型数据库!

http://www.dtcms.com/wzjs/465175.html

相关文章:

  • 武汉网站建设服务商深圳华强北最新消息
  • 网站制作和网页制作区别池州网站seo
  • 西安正规网站建设报价新手怎样推销自己的产品
  • 做网站上传空间什么意思优化网站性能监测
  • 什么是理财北京网站建设公司百度系app
  • 电商网站类型网站交易
  • 品牌策划方案案例seo网络优化招聘
  • 网站服务器错误403百度资源搜索引擎
  • 抖音广告投放收费标准上海专业优化排名工具
  • 做网站宣传费用记什么科目深圳营销型网站
  • 公众号怎么制作才美丽网站优化是什么意思
  • 网站编辑 seo是什么 百度知道专业seo公司
  • 有没有什么做海报字体的网站如何制作自己的公司网站
  • 南通网站建设协议东莞有哪些做推广的网站
  • 苏州建设建设信息网站独立站seo实操
  • 兼职 网站 小程序 建设app推广拉新一手渠道
  • 门户网站的三大基本特征最好看免费观看高清大全
  • wordpress中引用js css样式搜狗seo快速排名公司
  • 西安北郊做网站网络营销策划的内容
  • 出口跨境电商有哪些平台吉林网络seo
  • 网站运营与管理期末考试答案阿里云云服务平台
  • 郑州城乡建设局官网seo优化中以下说法正确的是
  • 网站建设制作浩森宇特做企业网站建设公司哪家好
  • 学技术哪个行业最吃香seo需要什么技术
  • 中山市政府网站建设seo前线
  • 网站开发可退税百度大数据平台
  • 网站开发公司的义务seo网站推广软件排名
  • 建设银行网站注册用户名不通过网络营销方案ppt
  • 网页版传奇工作室搜索引擎优化需要多少钱
  • 做网站建设业务员好吗深圳百度推广联系方式