JDBC练习
JDBC练习:
练习:完成商品品牌数据的增删改查操作
查询:查询所有数据
添加:添加品牌
修改:根据 id修改
删除:根据 id删除
1、查询所有数据:
准备环境:
数据库表:tb_brand
-- 删除tb_brand表 drop table if exists tb_brand; -- 创建tb_brand表 create table tb_brand( -- id 主键 id int primary key auto_increment, -- 品牌名称 brand_name varchar(20), -- 企业名称 company_name varchar(20), -- 排序字段 ordered int, -- 描述信息 description varchar(100), -- 状态:0、禁用;1、启用 status int ); -- 插入数据 insert into tb_brand(brand_name, company_name, ordered, description, status) values ('三只松鼠', '三只松鼠股份有限公司', 100, '好吃不上火', 0), ('华为', '华为技术有限公司', 100, '华为致力于把数字世界带入每个人,每个家庭,每个组织,构建万物互联的智能世界', 1), ('小米', '小米科技有限公司', 50, 'are you ok', 1); select * from tb_brand;
实体类:Brand
package com.itheima.pojo; /* 品牌信息 快速替换(即将一个符号改为另一个符号) Ctrl + R 按住Alt + 鼠标左键 可以进行整列操作 */ public class Brand { //建议:出现基本类型(有默认值)时,使用其对应的包装类型(对象的默认值null一般不会冲突业务) // id 主键 private Integer id; // 品牌名称 private String brandName; // 企业名称 private String companyName; // 排序字段 private Integer ordered; // 描述信息 private String description; // 状态:0、禁用;1、启用 private Integer status; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getBrandName() { return brandName; } public void setBrandName(String brandName) { this.brandName = brandName; } public String getCompanyName() { return companyName; } public void setCompanyName(String companyName) { this.companyName = companyName; } public Integer getOrdered() { return ordered; } public void setOrdered(Integer ordered) { this.ordered = ordered; } public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } public Integer getStatus() { return status; } public void setStatus(Integer status) { this.status = status; } @Override public String toString() { return "Brand{" + "id=" + id + ", brandName='" + brandName + '\'' + ", companyName='" + companyName + '\'' + ", ordered=" + ordered + ", description='" + description + '\'' + ", status=" + status + '}'; } }
测试用例
package com.itheima.example; /* 品牌数量的增删改查操作 */ public class BrandTest { }
查询所有参考代码:
package com.itheima.example; import com.alibaba.druid.pool.DruidDataSourceFactory; import com.itheima.pojo.Brand; import org.junit.Test; import javax.sql.DataSource; import java.io.FileInputStream; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.util.ArrayList; import java.util.List; import java.util.Properties; /* 品牌数量的增删改查操作 */ public class BrandTest { //查询所有的数据 /* 1、获取Connection连接 2、定义SQL字符串 对应不同sql语句有出入 3、获取PreparedStatement对象 4、设置参数:不需要 有不同之处 5、执行SQL 6、处理结果 List<Brand> 有不同之处 7、释放资源 */ /** * 查询所有 * 1、SQl:select * from tb_brand; * 2、参数:不需要 * 3、结果:List<Brand> */ @Test public void testSelectAll() throws Exception { //1、获取Connection连接 //用于读取配置文件 Properties prop = new Properties(); prop.load(new FileInputStream("jdbc-demo/src/druid.properties")); //获取连接池对象 DataSource dataSource = DruidDataSourceFactory.createDataSource(prop); //获取数据库连接 Connection conn = dataSource.getConnection(); //2、定义SQL String sql = "select * from tb_brand"; //3、获取pstmt对象 PreparedStatement pstmt = conn.prepareStatement(sql); //4、设置参数 //5、执行sql ResultSet rs = pstmt.executeQuery(); //查询语句对应executeQuery方法 //6、处理结果 List<Brand> 封装Brand对象,装载List集合 Brand brand = null; //节约空间 List<Brand> brands = new ArrayList<Brand>(); while (rs.next()) { //如果返回的结果中还有数据 //获取数据 int id = rs.getInt("id");//参数可以是列的名称,或者是列的编号(从1开始) String brandName = rs.getString("brand_name"); String companyName = rs.getString("company_name"); int ordered = rs.getInt("ordered"); String description = rs.getString("description"); int status = rs.getInt("status"); //封装Brand对象 brand = new Brand(); brand.setId(id); brand.setBrandName(brandName); brand.setCompanyName(companyName); brand.setOrdered(ordered); brand.setDescription(description); brand.setStatus(status); //装载集合 brands.add(brand); } System.out.println(brands); //7、释放资源 rs.close(); pstmt.close(); conn.close(); } }
2、添加数据:
1、编写SQL语句:
insert into tb_brand(brand_name, company_name, ordered, description, status) values(?,?,?,?,?);
2、是否需要参数? 需要:除了id之外的所有数据
3、返回结果如何封装?boolean
参考代码:
/** * 添加 * 1、SQl:insert into tb_brand(brand_name, company_name, ordered, description, status) * values(?,?,?,?,?); * 2、参数:需要,除了id之外的所有数据 * 3、结果:返回一个boolean类型表示是否添加成功 */ @Test public void testAdd() throws Exception { //接收页面提交的参数 (此处只是模拟此过程) String brandName = "香飘飘"; String companyName = "香飘飘"; int ordered = 1; String description = "绕地球一圈"; int status = 1; //1、获取Connection连接 //用于读取配置文件 Properties prop = new Properties(); prop.load(new FileInputStream("jdbc-demo/src/druid.properties")); //获取连接池对象 DataSource dataSource = DruidDataSourceFactory.createDataSource(prop); //获取数据库连接 Connection conn = dataSource.getConnection(); //2、定义SQL //id字段是数据库自动进行添加,使用?占位防止SQL注入 String sql = "insert into tb_brand(brand_name, company_name, ordered, description, status) values(?,?,?,?,?);"; //3、获取pstmt对象 PreparedStatement pstmt = conn.prepareStatement(sql); //4、设置参数 注意此处根据?号位置进行赋值,下标从1开始 pstmt.setString(1, brandName); pstmt.setString(2, companyName); pstmt.setInt(3, ordered); pstmt.setString(4, description); pstmt.setInt(5, status); //5、执行sql // ResultSet rs = pstmt.executeQuery(); //与查询语句不同,没有数据返回,只需要查看影响的行数 int count = pstmt.executeUpdate(); //返回影响的行数 //6、处理结果 System.out.println(count > 0); //7、释放资源 pstmt.close(); conn.close(); }
3、通过id进行修改
1、编写SQL语句:
update tb_brand set brand_name = ?, company_name = ?, ordered = ?, description = ?, status = ? where id = ?;
2、是否需要参数? 需要:Brand对象所有数组
3、返回结果如何封装? boolean
参考代码:
/** * 修改 * 1、SQl: * update tb_brand * set brand_name = ?, * company_name = ?, * ordered = ?, * description = ?, * status = ? * where id = ?; * 2、参数:需要,其中id作为where条件 * 3、结果:返回一个boolean类型表示是否修改成功 */ @Test public void testUpdate() throws Exception { //接收页面提交的参数 (此处只是模拟此过程) String brandName = "香飘飘"; String companyName = "香飘飘"; int ordered = 1000; String description = "绕地球三圈"; int status = 1; int id = 4; //1、获取Connection连接 //用于读取配置文件 Properties prop = new Properties(); prop.load(new FileInputStream("jdbc-demo/src/druid.properties")); //获取连接池对象 DataSource dataSource = DruidDataSourceFactory.createDataSource(prop); //获取数据库连接 Connection conn = dataSource.getConnection(); //2、定义SQL //id字段是数据库自动进行添加,使用?占位防止SQL注入 String sql = "update tb_brand set brand_name = ?, company_name = ?, ordered = ?, description = ?, status = ? where id = ?;"; //3、获取pstmt对象 PreparedStatement pstmt = conn.prepareStatement(sql); //4、设置参数 注意此处根据?号位置进行赋值,下标从1开始 pstmt.setString(1, brandName); pstmt.setString(2, companyName); pstmt.setInt(3, ordered); pstmt.setString(4, description); pstmt.setInt(5, status); pstmt.setInt(6, id); //5、执行sql // ResultSet rs = pstmt.executeQuery(); //与查询语句不同,没有数据返回,只需要查看影响的行数 int count = pstmt.executeUpdate(); //返回影响的行数 //6、处理结果 System.out.println(count > 0); //7、释放资源 pstmt.close(); conn.close(); }
4、根据id删除:
1、编写SQL语句
delete from tb_brand where id = ?;
2、是否需要参数? 需要:id
3、返回结果如何封装?boolean
参考代码:
/** * 删除 * 1、SQl:delete from tb_brand where id = ?; * 2、参数:需要,id * 3、结果:返回一个boolean类型表示是否修改成功 */ @Test public void testDelete() throws Exception { //接收页面提交的参数 (此处只是模拟此过程) int id = 4; //1、获取Connection连接 //用于读取配置文件 Properties prop = new Properties(); prop.load(new FileInputStream("jdbc-demo/src/druid.properties")); //获取连接池对象 DataSource dataSource = DruidDataSourceFactory.createDataSource(prop); //获取数据库连接 Connection conn = dataSource.getConnection(); //2、定义SQL //id字段是数据库自动进行添加,使用?占位防止SQL注入 String sql = "delete from tb_brand where id = ?;"; //3、获取pstmt对象 PreparedStatement pstmt = conn.prepareStatement(sql); //4、设置参数 注意此处根据?号位置进行赋值,下标从1开始 pstmt.setInt(1, id); //5、执行sql // ResultSet rs = pstmt.executeQuery(); //与查询语句不同,没有数据返回,只需要查看影响的行数 int count = pstmt.executeUpdate(); //返回影响的行数 //6、处理结果 System.out.println(count > 0); //7、释放资源 pstmt.close(); conn.close(); }
本文作者:如此而已~~~
本文链接:https://www.cnblogs.com/fragmentary/p/17053337.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏