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

JavaWeb学习打卡18(JDBC案例详解)

什么是JDBC:Java连接数据库!

连接数据库需要 jar 包的支持:

  • java.sql
  • javax.sql
  • mysql-conneter-java.... (连接驱动所需要的包,必须要导入)

 JDBC实现:

导入数据库依赖:

  <!--       Mysql的驱动-->
<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.28</version></dependency>

在 Mysql 中创建一个 jdbc 数据库 ,并创建一个  users  数据表

IDEA中连接数据库:

在IDEA中向数据库编写 sql 命令:

JDBC 固定步骤:

1.加载驱动

2.连接数据库,代表数据库

3.向数据库发送SQL的对象Statement:CRUD(增删改查)

4. 编写SQL(根据业务,写不同的SQL)

5.执行SQL

6.关闭连接,释放资源(先开的资源后关)

package com.xu.test;import com.mysql.jdbc.Driver;import java.sql.*;public class TestJdbc {public static void main(String[] args) throws ClassNotFoundException, SQLException {//配置信息//useUnicode=true&characterEncoding=utf-8 解决中文乱码问题//useSSL=true  建立安全连接String url = "jdbc:mysql://localhost:3306/jdbc?useUnicode=true&characterEncoding=utf-8&useSSL=true";String username = "root";String password = "123456";//1.加载驱动Class.forName("com.mysql.jdbc.Driver");//这里有可能会爆红找不到这个类,我们抛出一下异常即可//2.连接数据库,Connection connection = DriverManager.getConnection(url, username, password);//这里也需要抛出异常//3.向数据库发送SQL 对象Statement:CRUD(增删改查)Statement statement = connection.createStatement();//4.编写SQLString sql = "select * from jdbc.users;";//5.执行 查询 SQL用:executeQuery(sql) ,返回一个结果集//执行 增加,修改,删除的 SQL 用:statement.executeUpdate(sql),返回的受影响的行数//int i = statement.executeUpdate(sql);ResultSet rs = statement.executeQuery(sql);//rs里面存在数据则遍历出来while (rs.next()){System.out.println("id="+rs.getObject("id"));System.out.println("username="+rs.getObject("username"));System.out.println("pwd="+rs.getObject("pwd"));System.out.println("email="+rs.getObject("email"));System.out.println("birthday="+rs.getObject("birthday"));}//6.关闭连接,释放资源(一定要做)先开后关rs.close();statement.close();connection.close();}
}

运行结果:

测试JDBC插入数据:

package com.xu.test;import java.sql.*;public class TestJdbc {public static void main(String[] args) throws ClassNotFoundException, SQLException {//配置信息//useUnicode=true&characterEncoding=utf-8 解决中文乱码问题//useSSL=true  建立安全连接String url = "jdbc:mysql://localhost:3306/jdbc?useUnicode=true&characterEncoding=utf-8&useSSL=true";String username = "root";String password = "123456";//1.加载驱动Class.forName("com.mysql.jdbc.Driver");//这里有可能会爆红找不到这个类,我们抛出一下异常即可//2.连接数据库,Connection connection = DriverManager.getConnection(url, username, password);//这里也需要抛出异常//3.编写SQLString sql = "insert into jdbc.users(id, username, pwd, email, birthday) VALUES (?,?,?,?,?);";//4.预编译PreparedStatement preparedStatement = connection.prepareStatement(sql);preparedStatement.setInt(1,4);//给第一个占位符 ? 赋值为 1preparedStatement.setString(2,"小许");//给第二个占位符 ? 赋值为 小许preparedStatement.setString(3,"123456");//给第三个占位符 ? 赋值为 123456preparedStatement.setString(4,"654321@qq.com");//给第四个占位符 ? 赋值为 654321@qq.compreparedStatement.setDate(5,new Date(new java.util.Date().getTime()));//给第五个占位符 ? 赋值为 new Date(new java.util.Date().getTime())//5.执行SQLint i = preparedStatement.executeUpdate();if (i > 0){System.out.println("插入成功@");}//6.关闭连接,释放资源(一定要做)先开后关preparedStatement.close();connection.close();}
}

运行结果:

Junit 单元测试

添加依赖:

        <dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter-engine</artifactId><version>5.7.2</version></dependency>

简单使用

@Test注解只有在方法上有效,只要加了这个注解的方法,就可以直接运行!

package com.xu.test;import org.junit.jupiter.api.Test;public class TestDemo {@Testpublic void test(){System.out.println("这里是Test 注解测试方法");}
}

运行结果(正确):

若报错,则直接回说明错误:

http://www.xdnf.cn/news/16664.html

相关文章:

  • [leetcode] 电话号码的排列组合
  • CSRF漏洞原理
  • CentOS7 安装和配置教程
  • USRP X410 X440 5G及未来通信技术的非地面网络(NTN)
  • Matplotlib(三)- 图表辅助元素
  • 经典算法题解析:从思路到实现,掌握核心编程思维
  • 天学网面试总结 —— 前端开发岗
  • Go 语言-->指针
  • 【2025/07/28】GitHub 今日热门项目
  • 【服务器知识】nginx配置ipv6支持
  • 大模型的开发应用(十九):AIGC基础
  • 【Spring WebFlux】 三、响应式流规范与实战
  • Java 笔记 serialVersionUID
  • ADB+Python控制(有线/无线) Scrcpy+按键映射(推荐)
  • 服务器查日志太慢,试试grep组合拳
  • 时序数据库选型指南:工业大数据场景下基于Apache IoTDB技术价值与实践路径
  • 5 分钟上手 Firecrawl
  • 【办公类-109-01】20250728托小班新生挂牌(学号姓名)
  • API产品升级丨全知科技发布「知影-API风险监测平台」:以AI重构企业数据接口安全治理新范式
  • 企业级日志分析系统ELK
  • Pycaita二次开发基础代码解析:点距测量、对象层级关系与选择机制深度剖析
  • 基于DeepSeek大模型和STM32的矿井“围压-温度-开采扰动“三位一体智能监测系统设计
  • 边缘计算+前端实时性:本地化数据处理在设备监控中的响应优化实践
  • vue element 封装表单
  • STM32时钟源
  • GaussDB as的用法
  • 【氮化镓】GaN同质外延p-i-n二极管中星形与三角形扩展表面缺陷的电子特性
  • 力扣 hot100 Day58
  • LeetCode 2044.统计按位或能得到最大值的子集数目:二进制枚举/DFS回溯(剪枝)
  • 介绍一下static关键字