以下代码的操作均忘记释放连接对象了 忘记释放资源了 记得释放
配置文件准备:
数据库准备:
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
('三只松鼠','三只松鼠股份有限公司',5,'好吃不上火',0),
('华为','华为技术有限公司',100,'华为致于把数字世界带入每个人、每个家庭、每个组织、构建万物互联的智能世界',1),
('小米','小米科技有限公司',50,'are you ok',1);
品牌类:
package com.itheima.pojo;
/**
* 品牌类
*
* ctrl + r : 把从数据库复制过来的属性 统一成 / /
* alt + 鼠标左键 : 整列编辑(可进行同时修改 删除 操作)
* 属性类型 需要和数据库中的类型一致 (属性过多的时候可以先统一写成String类型 再修改)
*
* 细节:属性名用驼峰 更美观
*
* 注意细节: 在实体类中,基本数据类型建议使用其对应的包装类型(包装类是对象 默认值null) (防止给我们业务带来疑惑)
*/
public class Brand {
// id 主键
private Integer id;
// 品牌名称
private String brandName;
// 企业名称
private String companyNam;
// 排序字段
private Integer ordered;
// 描述信息
private String description;
// 状态: 0:禁用 1:启动
private Integer status; // 这里int类型我们尽量用包装类型 因为int类型当我们这个属性不赋值的时候
// 默认值为0 而我们业务中 0 :代表禁用(会给我们的业务带来疑惑)
// getter and setter 方法
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 getCompanyNam() {
return companyNam;
}
public void setCompanyNam(String companyNam) {
this.companyNam = companyNam;
}
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;
}
// toString 方法
@Override
public String toString() {
return "Brand{" +
"id=" + id +
", brandName='" + brandName + '\'' +
", companyNam='" + companyNam + '\'' +
", ordered='" + ordered + '\'' +
", description='" + description + '\'' +
", status=" + status +
'}';
}
}
查操作:
package com.itheima.example;
import com.alibaba.druid.pool.DruidDataSourceFactory;
import com.itheima.pojo.Brand;
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 BrandSelectAll {
public static void main(String[] args) throws Exception {
/**
* 查询所有数据库中的数据
* SQL:select * from tb_brand;
* 结果: 把数据库中的信息 通过封装给Brand对象 然后存放到List集合当中
*/
// 第一步:获取conn对象 (利用数据库连接池操作)
// 3.加载配置文件
Properties prop =new Properties();
prop.load(new FileInputStream("jdbc-demo/src/druid.properties")); // 把读出来的properties文件 加载到prop集合中
// 4.获取数据库连接池对象 conn
DataSource dataSource = DruidDataSourceFactory.createDataSource(prop);
// 5.获取数据库连接 Connection
Connection conn =dataSource.getConnection();
// 第二步:定义SQL语句
String sql ="select * from tb_brand";
// 第三步:获取执行sql的对象 (防注入)
PreparedStatement pt =conn.prepareStatement(sql);
// 第四步:设置参数
// 第五步:执行SQL
ResultSet rs =pt.executeQuery();
// 第六步:处理结果 :把数据库中的信息 通过封装给Brand对象 然后存放到List集合当中
List<Brand> list =new ArrayList<>();
while (rs.next()){
// 获取数据 封装到Brand对象当中
Brand brand =new Brand();
brand.setId(rs.getInt("id"));
brand.setBrandName(rs.getString("brand_name"));
brand.setCompanyNam(rs.getString("company_name"));
brand.setOrdered(rs.getInt("ordered"));
brand.setDescription(rs.getString("description"));
brand.setStatus(rs.getInt("status"));
// 存放到List集合当中
list.add(brand);
}
System.out.println(list);
}
}
增操作:
package com.itheima.example;
import com.alibaba.druid.pool.DruidDataSourceFactory;
import javax.sql.DataSource;
import java.io.FileInputStream;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.util.Properties;
public class BrandAdd {
public static void main(String[] args) throws Exception {
/**
* 添加数据
* SQL:insert into tb_brand(brand_name,company_name,ordered,description,status) values
* (?,?,?,?,?);
* 注意:这里id主键不能让用户填写,因为主键在数据库中是自增的 用户不知道添加几 万一重复就错了
*
* 返回结果如何封装:返回给用户端(前端) boolean 让前端进行渲染
*/
// 接收用户在页面上提交的参数 (模拟)
String brandName = "香飘飘奶茶"; // 细节: java中尽量用驼峰命名
String companyName ="香飘飘有限公司";
int ordered =1;
String description ="香飘飘奶茶女人的收割机";
int status =1; // 0:代表禁用 1: 代表启用
// 第一步:获取conn对象 (利用数据库连接池操作)
// 3.加载配置文件
Properties prop =new Properties();
prop.load(new FileInputStream("jdbc-demo/src/druid.properties")); // 把读出来的properties文件 加载到prop集合中
// 4.获取数据库连接池对象 conn
DataSource dataSource = DruidDataSourceFactory.createDataSource(prop);
// 5.获取数据库连接 Connection
Connection conn =dataSource.getConnection();
// 第二步:定义SQL语句
String sql ="insert into tb_brand(brand_name,company_name,ordered,description,status) values(?,?,?,?,?)";
// 第三步:获取执行sql的对象 (防注入)
PreparedStatement pt =conn.prepareStatement(sql);
// 第四步:设置参数
pt.setString(1,brandName);
pt.setString(2,companyName);
pt.setInt(3,ordered);
pt.setString(4,description);
pt.setInt(5,status);
// 第五步:执行SQL
/**
* 注意: 这里的SQL:是插入的语句 不是查找的语句 所以不能再用executeQuery了 这个方法是拿数据库中的数据的方法
* 要用executeUpdate 判断数据库受影响的行数
* 根据数据库受影响的行数 来判断数据是否添加成功与失败
*/
int Count = pt.executeUpdate();
// 第六步:处理结果
System.out.println(Count > 0); // 受影响行数大于0 说明插入数据成功 为0 说明失败
}
}
改操作:
package com.itheima.example;
import com.alibaba.druid.pool.DruidDataSourceFactory;
import javax.sql.DataSource;
import java.io.FileInputStream;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.util.Properties;
public class BrandUpdate {
public static void main(String[] args) throws Exception {
/**
* 修改数据库中的数据 : 通过id进行数据修改
* SQL:update tb_brand set brand_name =?,company_name =?,ordered =?,description =?,status =?
* where id =?;
* 结果: 返回boolean类型
*
* */
// 接收页面提交的参数
String brandName = "蜜雪冰城";
String companyName ="蜜雪冰城有限公司";
int ordered =600;
String description ="你爱我 我爱你 蜜雪冰城甜蜜蜜 ";
int status =1; // 0:代表禁用 1: 代表启用
int id =4;
// 第一步:获取conn对象 (利用数据库连接池操作)
// 3.加载配置文件
Properties prop =new Properties();
prop.load(new FileInputStream("jdbc-demo/src/druid.properties")); // 把读出来的properties文件 加载到prop集合中
// 4.获取数据库连接池对象 conn
DataSource dataSource = DruidDataSourceFactory.createDataSource(prop);
// 5.获取数据库连接 Connection
Connection conn =dataSource.getConnection();
// 第二步:定义SQL语句a
String sql ="update tb_brand set brand_name =?,company_name =?,ordered =?,description =?,status =? where id =?";
// 第三步:获取执行sql的对象 (防注入)
PreparedStatement pt =conn.prepareStatement(sql);
// 第四步:设置参数
pt.setString(1,brandName);
pt.setString(2,companyName);
pt.setInt(3,ordered);
pt.setString(4,description);
pt.setInt(5,status);
pt.setInt(6,id);
// 第五步:执行SQL
int Count =pt.executeUpdate();
// 第六步:处理结果 : 判断影响的行数, 如果大于0 说明数据库当中数据受影响了 即返回true 为0时false
System.out.println(Count >0);
}
}
删操作:
package com.itheima.example;
import com.alibaba.druid.pool.DruidDataSourceFactory;
import javax.sql.DataSource;
import java.io.FileInputStream;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.util.Properties;
public class BrandDel {
public static void main(String[] args) throws Exception {
/**
* 删除数据库中的数据 : 通过id进行数据删除
* SQL:delete from tb_brand where id = ?;
*
* 结果: 返回boolean类型
*
* */
// 接收页面提交的参数 接收id即可 直接通过id删除数据
int id =4;
// 第一步:获取conn对象 (利用数据库连接池操作)
// 3.加载配置文件
Properties prop =new Properties();
prop.load(new FileInputStream("jdbc-demo/src/druid.properties")); // 把读出来的properties文件 加载到prop集合中
// 4.获取数据库连接池对象 conn
DataSource dataSource = DruidDataSourceFactory.createDataSource(prop);
// 5.获取数据库连接 Connection
Connection conn =dataSource.getConnection();
// 第二步:定义SQL语句a
String sql ="delete from tb_brand where id = ?";
// 第三步:获取执行sql的对象 (防注入)
PreparedStatement pt =conn.prepareStatement(sql);
// 第四步:设置参数
pt.setInt(1,id);
// 第五步:执行SQL
int Count =pt.executeUpdate();
// 第六步:处理结果 : 判断影响的行数, 如果大于0 说明数据库当中数据受影响了 即返回true 为0时false
System.out.println(Count >0);
}
}