什么是数据库句柄

83 阅读1分钟

✅ 什么是数据库句柄?

数据库句柄就是指程序中表示数据库连接的对象或资源,比如:

  • Java 中的 Connection conn = DriverManager.getConnection(...)
  • 使用连接池时(HikariCP、Druid、C3P0)获取到的连接句柄
  • Spring 框架中自动注入的 DataSource 获取的连接

🔍 数据库句柄相关的问题会导致哪些情况?

1. 连接未成功建立

  • 如果连接没成功,句柄就是 null 或无效,会报 NullPointerException 或连接失败类错误。

2. 连接超时/被关闭

  • 连接池回收连接后你仍然使用,会报 “connection is closed”。
  • 数据库断开后尝试复用连接句柄,也会报错。

3. 连接泄漏

  • 长时间不关闭连接导致连接耗尽,新线程无法获取连接。
  • 尤其是在异常路径中未调用 conn.close()

4. 连接对象失效导致查询/更新失败

  • 类似你遇到的:

    复制编辑
    org.springframework.dao.DataIntegrityViolationException
    

    有时是因句柄在内部失效或不完整读取数据造成的。

5. 数据库字段类型转换失败

  • 连接句柄关联的数据库类型和程序中的映射字段不一致,例如:

    • 数据库字段是 BIGINT,程序尝试以 Timestamp 读取。
    • 连接配置未正确设置字符集或时区,造成解析失败。