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

网站建设与维护模拟一东莞常平镇邮政编码

网站建设与维护模拟一,东莞常平镇邮政编码,网站建设祥云平台,我要注册邮箱目录 什么是JDBC?JDBC的四大核心组件JDBC使用步骤(六步法)事务处理连接池(提升性能)常见问题及解决总结 什么是JDBC? JDBC(Java Database Connectivity)是Java语言操作数据库的一套…

目录

  • 什么是JDBC?
  • JDBC的四大核心组件
  • JDBC使用步骤(六步法)
  • 事务处理
  • 连接池(提升性能)
  • 常见问题及解决
  • 总结

什么是JDBC?

JDBC(Java Database Connectivity)是Java语言操作数据库的一套标准接口。你可以把它想象成**“Java和数据库之间的桥梁”**。

  • 作用:用Java代码连接数据库(如MySQL、Oracle),执行SQL语句(增删改查),并处理结果。
  • 为什么需要它?不同数据库有自己的“方言”(如MySQL用VARCHAR,Oracle用VARCHAR2),JDBC统一了操作方式,开发者只需学一套API。

JDBC的四大核心组件

  1. DriverManager

    • 管理数据库驱动,负责“找司机”(驱动)。
    • 示例:Class.forName("com.mysql.cj.jdbc.Driver");(加载MySQL驱动)。
  2. Connection

    • 表示Java程序与数据库的“连接”,类似打电话时的通话线路。

    • 获取方式:

      Connection conn = DriverManager.getConnection(url, user, password);
      
  3. Statement / PreparedStatement

    • Statement:直接执行SQL语句,但可能被SQL注入攻击(不安全)。

      Statement stmt = conn.createStatement();
      
    • PreparedStatement(推荐):预编译SQL,防注入,性能更高。

      PreparedStatement ps = conn.prepareStatement("SELECT * FROM users WHERE id=?");
      ps.setInt(1, 1001); // 参数下标从1开始
      
  4. ResultSet

    • 保存查询结果,类似Excel表格,用“光标”逐行读取数据。

      ResultSet rs = ps.executeQuery();
      while (rs.next()) {String name = rs.getString("name");
      }
      

JDBC使用步骤(六步法)

1. 导入数据库驱动包

  • 如MySQL:下载mysql-connector-java.jar,添加到项目依赖。

2. 注册驱动

Class.forName("com.mysql.cj.jdbc.Driver"); // 新版MySQL可省略,自动加载

3. 建立连接

String url = "jdbc:mysql://localhost:3306/mydb?useSSL=false&serverTimezone=UTC";
String user = "root";
String password = "123456";
Connection conn = DriverManager.getConnection(url, user, password);

4. 创建Statement对象

PreparedStatement ps = conn.prepareStatement("INSERT INTO users(name) VALUES (?)");
ps.setString(1, "张三");

5. 执行SQL并处理结果

  • 增删改

    int rows = ps.executeUpdate(); // 返回受影响的行数
    
  • 查询

    ResultSet rs = ps.executeQuery();
    while (rs.next()) {System.out.println(rs.getString("name"));
    }
    

6. 关闭资源(重要!)

rs.close();
ps.close();
conn.close(); // 关闭顺序:后开的先关

优化:用try-with-resources自动关闭(Java 7+)

try (Connection conn = DriverManager.getConnection(url, user, password);PreparedStatement ps = conn.prepareStatement(sql)) {// 执行操作...
} // 自动关闭conn和ps,无需手动

事务处理

确保多个操作要么全部成功,要么全部失败(如转账)。

conn.setAutoCommit(false); // 关闭自动提交
try {// 执行多个SQL...conn.commit(); // 成功则提交
} catch (Exception e) {conn.rollback(); // 失败则回滚
}

连接池(提升性能)

频繁创建连接很耗资源,连接池会预先创建一批连接,用时取出,用完归还。

  • 常用工具:HikariCP、Druid

  • 示例(HikariCP):

    HikariConfig config = new HikariConfig();
    config.setJdbcUrl(url);
    config.setUsername(user);
    config.setPassword(password);
    HikariDataSource ds = new HikariDataSource(config);
    Connection conn = ds.getConnection(); // 从池中获取
    

常见问题及解决

  1. ClassNotFoundException: com.mysql.jdbc.Driver
    • 原因:未导入驱动包,或驱动类名写错。
    • 解决:检查包路径,新版MySQL驱动类名为com.mysql.cj.jdbc.Driver
  2. SQLException: Access denied for user
    • 原因:用户名或密码错误,或数据库未授权远程访问。
    • 解决:检查密码,确保数据库允许从本地(或指定IP)连接。
  3. 连接泄漏
    • 现象:程序运行一段时间后无法连接数据库。
    • 解决:确保所有ConnectionStatementResultSet在finally块或try-with-resources中关闭。

总结

  • JDBC核心:通过DriverManager获取连接,用PreparedStatement执行SQL,处理ResultSet结果。
  • 最佳实践:使用连接池、PreparedStatement防注入、try-with-resources管理资源。
  • 下一步学习:掌握ORM框架(如MyBatis、Hibernate),简化JDBC操作。

示例完整代码(MySQL插入数据):

try (Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test?serverTimezone=UTC", "root", "123456");PreparedStatement ps = conn.prepareStatement("INSERT INTO users(name) VALUES (?)")) {ps.setString(1, "李四");int rows = ps.executeUpdate();System.out.println("插入了 " + rows + " 行数据");
} catch (SQLException e) {e.printStackTrace();
}

文章转载自:

http://CVgkH10c.kgjyy.cn
http://44StAxgH.kgjyy.cn
http://DvCwcZ6R.kgjyy.cn
http://9xqaf5IH.kgjyy.cn
http://0B0vmfSy.kgjyy.cn
http://wNtEFdw7.kgjyy.cn
http://FmYBBdaN.kgjyy.cn
http://rXpIHZgX.kgjyy.cn
http://ug0EfCOT.kgjyy.cn
http://ZUwKbpYq.kgjyy.cn
http://PFNKROup.kgjyy.cn
http://o6fkCFrE.kgjyy.cn
http://NiUJkEEL.kgjyy.cn
http://1UdNArxJ.kgjyy.cn
http://MDXbl90j.kgjyy.cn
http://cym5m5Rf.kgjyy.cn
http://s74QZPi2.kgjyy.cn
http://XrpbndaQ.kgjyy.cn
http://YrNHre6N.kgjyy.cn
http://GAEUQeqO.kgjyy.cn
http://VYR8o6E3.kgjyy.cn
http://CvUMUMp4.kgjyy.cn
http://EVXLT1PJ.kgjyy.cn
http://6SeyycvI.kgjyy.cn
http://yDyrTe1L.kgjyy.cn
http://xuHr4zTl.kgjyy.cn
http://SO9P8dgb.kgjyy.cn
http://ws2l2Kb9.kgjyy.cn
http://XU0Y1VPT.kgjyy.cn
http://slKMqLEI.kgjyy.cn
http://www.dtcms.com/wzjs/675257.html

相关文章:

  • 备案关闭网站建设影响网站双机热备怎么做
  • wordpress网站无法打开阜阳专业网站建设
  • 广州南沙网站建设搜狐网站建设设计
  • 广州金山大厦 网站建设网站建设教程资源
  • 四川建设厅官方网站是多少wordpress sql
  • 哈尔滨网站建设nsstd做网站的图片Pc端和手机端的区别
  • 公司软件网站建设wordpress本地登陆
  • 云建站自动建站系统源码做网站申请域名
  • 自己建设一个网站需要多少钱内蒙古微信公众号114查
  • 门户网站做公众号的好处北京网站建设平台
  • 建网站兴田德润企业邮箱后缀
  • php网站开发账号密码自己做的视频发什么网站
  • asp net网站建设个人主页制作教程
  • 怎样才能建立网站刷神马seo排名首页排名
  • 临沂法律网站开发公司wordpress时间插件下载
  • 网站开发有哪几种语言个人中心网页设计
  • 做网站可以盈利吗兰州今天的新消息
  • 网站开发的实训周的实训过程自己做网页怎么赚钱
  • 安徽网站建设案例食品包装
  • 广州网站制作联系方式设备网站开发
  • 如何选择做pc端网站企业网站模块种类
  • 网站开发app定制网站建设网页设计做网站
  • 网站针对爬虫爬取做的优化wordpress怎么建导航
  • 网站开发实用技术 代码百度关键词价格查询
  • python做后台网站的多吗南昌装修网站建设
  • 网站域名及空间购买国内网页设计优秀案例
  • 网站建设硬件配置云南省建设厅官方网站不良记录
  • 装修装饰网站建设浙江省大成建设集团有限公司网站
  • 专业的铁岭做网站公司乡村旅游网站的建设
  • 企业网站价格wordpress修改标题