在Java中如何使用JDBC进行数据查询与插入操作_Java数据库操作实践-java教程

jdbc核心是连得上、查得准、写得稳:statement适用于无参查询但不防sql注入;插入必须用preparedstatement防注入并支持自增键;sqlexception需按sqlstate区分处理;autocommit默认为true,手动事务须显式commit/rollback。

如何用 Connection 和 Statement 执行简单查询

直接用 Statement 查询是最基础的方式,适合写死 SQL、不带参数的场景。但要注意:它不能防止 SQL 注入,且每次执行都需数据库重新编译 SQL。

  • 必须显式调用 connection.createStatement() 获取实例,不能复用多个线程的 Statement
  • 查询后必须手动关闭 ResultSet、Statement、Connection(推荐用 try-with-resources)
  • executeQuery() 返回 ResultSet,需用 next() 移动游标,再用 getString("col") 或 getInt(1) 取值
try (Connection conn = DriverManager.getConnection(url, user, pwd);
     Statement stmt = conn.createStatement();
     ResultSet rs = stmt.executeQuery("SELECT id, name FROM users WHERE age > 25")) {
    while (rs.next()) {
        System.out.println(rs.getInt("id") + ": " + rs.getString("name"));
    }
}

为什么插入要用 PreparedStatement 而不是 Statement

插入操作几乎总是带变量,用 Statement 拼接字符串极易出错且危险;PreparedStatement 预编译 SQL、支持占位符、自动转义,是唯一合理选择。

  • setString(1, "Alice") 中的数字是问号 ? 出现顺序,不是列序号
  • 执行插入后,若需获取自增主键,必须在创建时加参数:conn.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS)
  • 批量插入别用循环多次 executeUpdate(),改用 addBatch() + executeBatch()
String sql = "INSERT INTO users (name, email) VALUES (?, ?)";
try (PreparedStatement ps = conn.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS)) {
    ps.setString(1, "Bob");
    ps.setString(2, "[email protected]");
    int affected = ps.executeUpdate();
    if (affected == 1) {
        try (ResultSet keys = ps.getGeneratedKeys()) {
            if (keys.next()) {
                long id = keys.getLong(1); // 自增 ID
            }
        }
    }
}

SQLException 常见触发点和应对方式

不是所有 SQLException 都代表业务失败——有些是连接中断、超时、锁等待,需要区分重试还是抛出。

夏夕资源网专注于CMS网站模板,主流语言整站网站源码下载,网站建设相关教程分享,好用的软件素材整合下载,提供一站式便捷自助服务。
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,默认解压密码为"zy.lucklyus.top",如遇到无法解压的请联系管理员!
夏夕资源网-网站模板_免费源码_资源素材 » 在Java中如何使用JDBC进行数据查询与插入操作_Java数据库操作实践-java教程
在线时间:12:00 - 22:00
关注微信公众号:微信公众号
站长邮箱:[email protected]
  • 运营天数: 1393+
  • 资源总数: 47989+
  • 用户总数: 1+
  • 今日更新: 0+
  • 访问次数: 4026194+
  • 本周更新: 0+
  • 最后更新: 2026-03-16

本站指数

×
  • 运营天数: 1393+
  • 资源总数: 47989+
  • 用户总数: 1+
  • 今日更新: 0+
  • 访问次数: 4026194+
  • 本周更新: 0+
  • 最后更新: 2026-03-16