JDBC-Druid增删改查
由于刚学完JDBC,所以来小练一下,通过Druid实现对数据库的增删改查操作
(现在是真正简单的纯数据库操作,等我学过前端,再做一个比较具体的!)
•数据库
新建一个数据库tb,创建brand表,有主键,品牌名,公司名,排序,描述,状态属性。
并插入三条信息(为防止主键id错乱,使用自动生成,即不写默认从1开始依次增加)
CREATE DATABASE IF NOT EXISTS tb;
USE tb; -- 建表
CREATE TABLE brand(
id INT PRIMARY KEY AUTO_INCREMENT, -- 主键,自动生成
brand_name VARCHAR(20), -- 品牌名
company_name VARCHAR(20), -- 公司名
ordered INT, -- 排序
description VARCHAR(100), -- 商品描述
statu INT -- 状态 0:禁用 1:启用
); -- 添加数据
INSERT INTO brand (brand_name,company_name,ordered,description,statu) VALUES
("三只松鼠", "三只松鼠股份有限公司", 5, "好吃不上火", 0),
("华为", "华为有限公司", 100, "华为华为华为",1),
("小米", "小米科技有限公司", 50, "are you ok?",1);

•代码
•创建品牌类
首先,先创建一个brand类(so easy),记得重写一下toString方法方便输出
package JDBCtest; /*
* 品牌
*/ public class Brand { // id 主键
private int id;
// 品牌名
private String brand_name;
// 公司名
private String company_name;
// 排序
private int ordered;
// 描述
private String description;
// 状态 0:禁用 1:启用
private Integer statu;// 包装类默认为null,不会影响数据, 建议使用包装类 public void setId(int id) {
this.id = id;
} public void setBrand_name(String brand_name) {
this.brand_name = brand_name;
} public void setCompany_name(String company_name) {
this.company_name = company_name;
} public void setOrdered(int ordered) {
this.ordered = ordered;
} public void setDescription(String description) {
this.description = description;
} public void setStatu(Integer statu) {
this.statu = statu;
} public int getId() {
return id;
} public String getBrand_name() {
return brand_name;
} public String getCompany_name() {
return company_name;
} public int getOrdered() {
return ordered;
} public String getDescription() {
return description;
} public Integer getStatu() {
return statu;
} @Override
public String toString() {
String s = "Brand{" + "id=" + id + ",brand_name=" + brand_name + ",company_name=" + company_name + ",ordered="
+ ordered + ",description" + description + ",status=" + statu + "}";
return s;
}
}
•增删改查操作
重头戏开始,其实四个操作代码差不多,主要是sql语句不同,具体步骤如下:
1. 加载Connection
•加载配置文件
•获取连接池对象
•获取数据库连接
2.Sql语句
3. 获取PreparedStatement对象
4. 设置参数
5. 执行Sql语句
6. 处理结果
7. 释放资源
•先以查询brand表全部数据为例:
上一篇博客已经给出加载Connection的代码,这里就不再多说。
使用PreparedStatement对象是为了防止SQL注入,也已经熟练使用了。
所以这个操作就是前几篇博客的一个综合运用。
查询全部 Select * from brand
/*
* 查询全部
*/
public static void SelectAll() throws Exception { // 1.加载connection
// 加载配置文件
Properties prop = new Properties();
prop.load(new FileInputStream("druid.properties"));
// 获取连接池对象
DataSource dataSource = DruidDataSourceFactory.createDataSource(prop);
// 获取数据库连接
Connection conn = dataSource.getConnection(); // 2.SQL语句
String sql = "Select * from brand"; // 3.获取preparedStatement对象
PreparedStatement pstmt = conn.prepareStatement(sql); // 4.设置参数
//虽然这个查询不需要设置参数 // 5.执行SQL
ResultSet rs = pstmt.executeQuery(); // 6.处理结果
ArrayList<Brand> alist = new ArrayList<Brand>();
while (rs.next()) {
Brand b = new Brand();
b.setId(rs.getInt(1));
b.setBrand_name(rs.getString(2));
b.setCompany_name(rs.getString(3));
b.setOrdered(rs.getInt(4));
b.setDescription(rs.getString(5));
b.setStatu(rs.getInt(6));
alist.add(b);
}
for (Brand b : alist) {
System.out.println(b.toString());
} // 7.释放资源
rs.close();
pstmt.close();
conn.close(); }
结果:

•添加数据:
和上述步骤相同,改变Sql语句,添加数据:Insert into brand(brand_name,company_name,ordered,description,statu) values(?,?,?,?,?)
注意id是自动生成,所以这里不写id(默认补充),从brand_name开始,接下来给preparedStatement对象使用setXxx()方法设置参数
/*
* 增
*/
public void Addtest() throws Exception {
// 1.加载connection
// 加载配置文件
Properties prop = new Properties();
prop.load(new FileInputStream("druid.properties"));
// 获取数据库连接池
DataSource dataSource = DruidDataSourceFactory.createDataSource(prop);
// 获取conn
Connection conn = dataSource.getConnection(); // 2.SQL语句
String sql = "Insert into brand(brand_name,company_name,ordered,description,statu) values(?,?,?,?,?)"; // 3.获取pstmt
PreparedStatement pstmt = conn.prepareStatement(sql);
// 完善sql语句
Scanner sc = new Scanner(System.in); String bname = sc.next();
String cname = sc.next();
int ordered = sc.nextInt();
String description = sc.next();
int statu = sc.nextInt();
pstmt.setString(1, bname);
pstmt.setString(2, cname);
pstmt.setInt(3, ordered);
pstmt.setString(4, description);
pstmt.setInt(5, statu); // 4.执行sql
pstmt.executeUpdate();
SelectAll(); // 5.释放资源
pstmt.close();
conn.close();
}
例:添加一条(香飘飘,香飘飘,2,绕地球3圈,0)
再增一条(华米,华米,1,华为和小米,1)

查看数据库

•删除数据:
删除数据:delete from brand where id=?
这里是用id删除,也可以换成其他属性
/*
* 删
*/
public void DeleteTest() throws Exception {
// 1.加载connection
// 加载配置文件
Properties prop = new Properties();
prop.load(new FileInputStream("druid.properties"));
// 获取数据库连接池
DataSource dataSource = DruidDataSourceFactory.createDataSource(prop);
// 获取conn
Connection conn = dataSource.getConnection(); // 2.sql语句
String sql = "delete from brand where id=?"; // 3.创建pstmt
PreparedStatement pstmt = conn.prepareStatement(sql);
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
pstmt.setInt(1, num); // 4.执行sql
pstmt.executeUpdate();
SelectAll(); // 5.释放资源
pstmt.close();
conn.close();
}
删除id=4


•模糊查询:
模糊查询我做的是品牌名的模糊查询,也可以改成其他或者多个属性的
模糊查询:Select * from brand where brand_name like ?
注意模糊查询时 %要放在setXxx()方法里!(这里我就错了,后来百度出来的....)
public void SelectTest() throws Exception {
// 1.加载connection
// 加载配置文件
Properties prop = new Properties();
prop.load(new FileInputStream("druid.properties"));
// 获取连接池对象
DataSource dataSource = DruidDataSourceFactory.createDataSource(prop);
// 获取数据库连接
Connection conn = dataSource.getConnection();
// 2.SQL语句
String sql = "Select * from brand where brand_name like ?";
// 3.获取preparedStatement对象
PreparedStatement pstmt = conn.prepareStatement(sql);
// 4.设置参数
Scanner sc = new Scanner(System.in);
String bname = sc.next();
pstmt.setString(1, "%" + bname + "%"); //注意这里
// 5.执行SQL
ResultSet rs = pstmt.executeQuery();
// 6.处理结果
ArrayList<Brand> alist = new ArrayList<Brand>();
while (rs.next()) {
Brand b = new Brand();
b.setId(rs.getInt(1));
b.setBrand_name(rs.getString(2));
b.setCompany_name(rs.getString(3));
b.setOrdered(rs.getInt(4));
b.setDescription(rs.getString(5));
b.setStatu(rs.getInt(6));
alist.add(b);
}
for (Brand b : alist) {
System.out.println(b.toString());
}
// 7.释放资源
rs.close();
pstmt.close();
conn.close();
}
查询:华

ok!✿✿ヽ(°▽°)ノ✿结束
JDBC-Druid增删改查的更多相关文章
- JDBC基础学习(一)—JDBC的增删改查
一.数据的持久化 持久化(persistence): 把数据保存到可掉电式存储设备中以供之后使用.大多数情况下,数据持久化意味着将内存中的数据保存到硬盘上加以固化,而持久化的实现过程大多通过各 ...
- Oracle使用JDBC进行增删改查 表是否存在
Oracle使用JDBC进行增删改查 数据库和表 table USERS ( USERNAME VARCHAR2(20) not null, PASSWORD VARCHAR2(20) ) a ...
- 纯Java JDBC连接数据库,且用JDBC实现增删改查的功能
Java JDBC连接数据库 package cn.cqvie.yjq; import java.sql.*; /** * 注册数据库的驱动程序,并得到数据库的连接对象 * @author yu * ...
- Java Web(十) JDBC的增删改查,C3P0等连接池,dbutils框架的使用
前面做了一个非常垃圾的小demo,真的无法直面它,菜的抠脚啊,真的菜,好好努力把.菜鸡. --WH 一.JDBC是什么? Java Data Base Connectivity,java数据库连接,在 ...
- MySQL的安装+可视化工具+JDBC的增删改查
1.Mysql和可视化工具的安装 安装包网上有很多资源.这里推荐一个我一直在用的学习网站,上面有提供安装包和详细的说明. http://how2j.cn/k/mysql/mysql-install/3 ...
- 【温故知新】Java web 开发(四)JSTL 与 JDBC 的增删改查
本篇开始使用 jstl 这个 jsp 的标签库,在同一个 Servlet 中实现处理 CRUD 请求,以及使用 jdbc 数据库基本操作.然后你会发现 Servlet 和 jdbc 还是有很多不方便之 ...
- MySQL之JDBC编程增删改查
MySQL之JDBC 一.JDBC是什么 Java DatabaseConnectivity (java语言连接数据库) 二.JDBC的本质 JDBC是SUN公司制定的一套接口(interface). ...
- Oracle使用JDBC进行增删改查
数据库和表 create table USERS( USERNAME VARCHAR2(20) not null, PASSWORD VARCHAR2(20))alter table USERS ...
- jqGrid(struts2+jdbc+jsp)增删改查的例子
前几日一直在找关于Java操作jqgrid返回json的例子,在网上也看了不少东西,结果都没几个合理的,于是本人结合网上的零散数据进行整理,完成了 一个比较完整的jqgrid小例子,考虑到还有很多 ...
- JDBC简单增删改查实现(单表)
0.准备工作 开发工具: MySQL数据库, intelliJ IDEA2017. 准备jar包: mysql-connector-java-5.1.28-bin.jar(其他均可) 1. 数据库数据 ...
随机推荐
- Dubbo基础一之实战初体验
本以为写这个小作文没什么难度的,可是好像并不是.前段时间重心放在驾考科目二,就想着小作文科二考过了再写也不是事,因为都实战过了.今天想着写却发现脑袋里啥都想不起来了,得翻项目和笔记回忆一下.所以还是那 ...
- Ansible-DevOps
Ansible-DevOps Ansible 搭建 CentOS7 yum install epel-release yum search ansible yum install ansible -y ...
- Vue 源码解读(8)—— 编译器 之 解析(上)
特殊说明 由于文章篇幅限制,所以将 Vue 源码解读(8)-- 编译器 之 解析 拆成了上下两篇,所以在阅读本篇文章时请同时打开 Vue 源码解读(8)-- 编译器 之 解析(下)一起阅读. 前言 V ...
- 【windows 操作系统】进程间通信(IPC)简述|无名管道和命名管道 消息队列、信号量、共享存储、Socket、Streams等
一.进程间通信简述 每个进程各自有不同的用户地址空间,任何一个进程的全局变量在另一个进程中都看不到,所以进程之间要交换数据必须通过内核,在内核中开辟一块缓冲区,进程1把数据从用户空间拷到内核缓冲区,进 ...
- Collection接口和Map接口的 size 方法和 isEmpty方法
一.Collection接口的 size 方法和 isEmpty方法 int size(); 返回列表中元素的数目,如果这个列表包含超过Integer.MAX_VALUE,则返回Integer.MAX ...
- Sonic+p4(1)
知识: Docker容器(打包环境加应用) 静态镜像运行container docker run(start)形成拓扑 目的:switch1获取switch2的网络统计数据 start.sh启动拓扑, ...
- django程序在windows服务器上发布
django程序在windows服务器上发布 参考文献:https://www.cnblogs.com/djangocn/p/10227006.html 1.安装 IIS 和 GCI 打开服务器管理器 ...
- 从零开始Pytorch-YOLOv3【笔记】(一)配置文件解读
前言 这是github上的一个项目YOLO_v3_tutorial_from_scratch,它还有相应的blog对其详细的解读.机器之心翻译了他的tutorial:从零开始PyTorch项目:YOL ...
- 小程序授权登录并 laravel7(laravel8) token 应用
参考博客: https://blog.csdn.net/qq_42839386/article/details/118279530 1:composer 下载 composer require fir ...
- tp5 Redis缓冲的设置与清除
控制器代码: //设置缓冲的方法 public function order() { $word = input('word');//接受搜索值 //题意:将订单数据使用redis进行缓存中,第二次读 ...