JDBC(2):JDBC对数据库进行CRUD
一. statement对象
JDBC程序中的Connection用于代表数据库的链接;Statement对象用于向数据库发送SQL语句;ResultSet用于代表Sql语句的执行结果
- JDBC中的statement对象用于向数据库发送SQL语句,想完成对数据库的增删改查,只需要通过这个对象向数据库发送增删改查语句即可
- Statement对象的executeUpdate方法,用于向数据库发送增、删、改的sql语句,executeUpdate执行完后,将会返回一个整数(即增删改语句导致了数据库几行数据发生了变化)
- Statement.executeQuery方法用于向数据库发送查询语句,executeQuery方法返回代表查询结果的ResultSet对象
二. 使用JDBC对数据库增删改查
1. 搭建实验环境
1. 创建一个名为jdbc的数据库,并且创建一个abc表
CREATE DATABASE jdbc;
USE jdbc;
CREATE TABLE abc(
id INT(5) PRIMARY KEY,
NAME VARCHAR(40),
PASSWORD VARCHAR(40)
);ENGINE=INNODB DEFAULT CHARSET=utf8
2.新建一个JavaWeb工程,并导入MySQL数据库驱动,MySQL的下载官网:https://mvnrepository.com/artifact/mysql/mysql-connector-java

3. 在src目录下创建一个database.properties文件,编写MySQL数据库的连接信息
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/jdbc
username=root
password=123456
4. 编写一个Demo工具类,用于连接数据库,获取数据库连接和释放数据库连接
import java.io.IOException;
import java.io.InputStream;
import java.sql.*;
import java.util.Properties; public class Demo {
private static String driver=null;
private static String url=null;
private static String username=null;
private static String password=null;
static {
//读取database.properties文件中的数据库连接信息
InputStream in = Demo.class.getClassLoader().getResourceAsStream("database.properties");
Properties prop = new Properties();
try {
prop.load(in);
} catch (IOException e1) {
e1.printStackTrace();
}<span class="hljs-comment">//获取数据库连接驱动</span>
driver = prop.getProperty(<span class="hljs-string">"driver"</span>);
<span class="hljs-comment">//获取数据库连接URL地址</span>
url = prop.getProperty(<span class="hljs-string">"url"</span>);
<span class="hljs-comment">//获取数据库连接用户名</span>
username = prop.getProperty(<span class="hljs-string">"username"</span>);
<span class="hljs-comment">//获取数据库连接密码</span>
password = prop.getProperty(<span class="hljs-string">"password"</span>);
} <span class="hljs-comment">//加载数据库驱动</span>
<span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> Connection getConnection(){
Connection connection=<span class="hljs-literal">null</span>;
<span class="hljs-keyword">try</span> {
Class.forName(driver);
connection = DriverManager.getConnection(url, username, password);
} <span class="hljs-keyword">catch</span> (Exception e) {
e.printStackTrace();
}
<span class="hljs-keyword">return</span> connection;
} <span class="hljs-comment">//释放资源</span>
<span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> <span class="hljs-keyword">void</span> release(Connection connection, Statement statement, ResultSet resultSet) {
<span class="hljs-keyword">if</span> (resultSet != <span class="hljs-literal">null</span>) {
<span class="hljs-keyword">try</span> {
<span class="hljs-comment">//关闭存储查询结果的ResultSet对象</span>
resultSet.close();
} <span class="hljs-keyword">catch</span> (Exception e) {
e.printStackTrace();
}
resultSet = <span class="hljs-literal">null</span>;
}
<span class="hljs-keyword">if</span> (statement != <span class="hljs-literal">null</span>) {
<span class="hljs-keyword">try</span> {
<span class="hljs-comment">//关闭负责执行SQL命令的Statement对象</span>
statement.close();
} <span class="hljs-keyword">catch</span> (Exception e) {
e.printStackTrace();
}
}
<span class="hljs-keyword">if</span> (connection != <span class="hljs-literal">null</span>) {
<span class="hljs-keyword">try</span> {
<span class="hljs-comment">//关闭Connection数据库连接对象</span>
connection.close();
} <span class="hljs-keyword">catch</span> (Exception e) {
e.printStackTrace();
}
}
}
}
2. 使用statement对象完成对数据库的CRUD操作
import org.junit.Test;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement; public class DemoTest {<span class="hljs-meta">@Test</span> <span class="hljs-comment">//插入数据</span>
public <span class="hljs-keyword">void</span> insert() {
Connection connection = <span class="hljs-keyword">null</span>;
Statement statement = <span class="hljs-keyword">null</span>;
ResultSet resultSet = <span class="hljs-keyword">null</span>;
<span class="hljs-keyword">try</span> {
<span class="hljs-comment">//获取一个数据库连接</span>
connection = Demo.getConnection(); <span class="hljs-comment">//通过connection对象获取负责执行SQL命令的Statement对象</span>
<span class="hljs-comment">//createStatement():创建向数据库发送sql的statement对象</span>
statement = connection.createStatement(); <span class="hljs-comment">//要执行的SQL命令</span>
<span class="hljs-built_in">String</span> sql = <span class="hljs-string">"insert into abc(id,name,password) "</span> +
<span class="hljs-string">"values(7,'csz','3098')"</span>;
<span class="hljs-comment">//执行插入操作,executeUpdate方法返回成功的条数</span>
<span class="hljs-built_in">int</span> <span class="hljs-built_in">num</span> = statement.executeUpdate(sql);
<span class="hljs-keyword">if</span> (<span class="hljs-built_in">num</span> > <span class="hljs-number">0</span>) {
System.out.println(<span class="hljs-string">"插入成功!!"</span>);
}
} <span class="hljs-keyword">catch</span> (Exception e) {
e.printStackTrace();
} <span class="hljs-keyword">finally</span> {
<span class="hljs-comment">//SQL执行完成之后释放相关资源</span>
Demo.release(connection, statement, resultSet);
} } <span class="hljs-meta">@Test</span> <span class="hljs-comment">//删除数据</span>
public <span class="hljs-keyword">void</span> delete() {
Connection connection = <span class="hljs-keyword">null</span>;
Statement statement = <span class="hljs-keyword">null</span>;
ResultSet resultSet = <span class="hljs-keyword">null</span>;
<span class="hljs-keyword">try</span> {
connection = Demo.getConnection();
statement = connection.createStatement();
<span class="hljs-built_in">String</span> sql = <span class="hljs-string">"delete from abc where id=4"</span>;
<span class="hljs-built_in">int</span> <span class="hljs-built_in">num</span> = statement.executeUpdate(sql);
<span class="hljs-keyword">if</span> (<span class="hljs-built_in">num</span> > <span class="hljs-number">0</span>) {
System.out.println(<span class="hljs-string">"删除成功!!"</span>);
}
} <span class="hljs-keyword">catch</span> (Exception e) {
e.printStackTrace();
} <span class="hljs-keyword">finally</span> {
Demo.release(connection, statement, resultSet);
}
} <span class="hljs-meta">@Test</span> <span class="hljs-comment">//更新数据</span>
public <span class="hljs-keyword">void</span> update() {
Connection connection = <span class="hljs-keyword">null</span>;
Statement statement = <span class="hljs-keyword">null</span>;
ResultSet resultSet = <span class="hljs-keyword">null</span>;
<span class="hljs-keyword">try</span> {
connection = Demo.getConnection();
statement = connection.createStatement();
<span class="hljs-built_in">String</span> sql = <span class="hljs-string">"update abc set name='ss' where id=7"</span>;
<span class="hljs-built_in">int</span> <span class="hljs-built_in">num</span> = statement.executeUpdate(sql);
<span class="hljs-keyword">if</span> (<span class="hljs-built_in">num</span> > <span class="hljs-number">0</span>) {
System.out.println(<span class="hljs-string">"更新成功!!"</span>);
}
} <span class="hljs-keyword">catch</span> (Exception e) {
e.printStackTrace();
} <span class="hljs-keyword">finally</span> {
Demo.release(connection, statement, resultSet);
}
} <span class="hljs-meta">@Test</span> <span class="hljs-comment">//查找</span>
public <span class="hljs-keyword">void</span> find() {
Connection connection = <span class="hljs-keyword">null</span>;
Statement statement = <span class="hljs-keyword">null</span>;
ResultSet resultSet = <span class="hljs-keyword">null</span>;
<span class="hljs-keyword">try</span> {
connection = Demo.getConnection();
statement = connection.createStatement();
<span class="hljs-built_in">String</span> sql = <span class="hljs-string">"select * from abc where id=7"</span>;
<span class="hljs-comment">//executeQuery() :用于向数据发送查询语句</span>
resultSet = statement.executeQuery(sql);
<span class="hljs-keyword">if</span> (resultSet.next()) {
System.out.println(resultSet.getString(<span class="hljs-string">"name"</span>));
}
} <span class="hljs-keyword">catch</span> (Exception e) {
e.printStackTrace();
} <span class="hljs-keyword">finally</span> {
Demo.release(connection, statement, resultSet);
}
}
}
JDBC(2):JDBC对数据库进行CRUD的更多相关文章
- javaweb学习总结(三十三)——使用JDBC对数据库进行CRUD
一.statement对象介绍 Jdbc中的statement对象用于向数据库发送SQL语句,想完成对数据库的增删改查,只需要通过这个对象向数据库发送增删改查语句即可. Statement对象的exe ...
- javaweb(三十三)——使用JDBC对数据库进行CRUD
一.statement对象介绍 Jdbc中的statement对象用于向数据库发送SQL语句,想完成对数据库的增删改查,只需要通过这个对象向数据库发送增删改查语句即可. Statement对象的exe ...
- 十六:使用JDBC对数据库进行CRUD
一.statement对象介绍 Jdbc中的statement对象用于向数据库发送SQL语句,想完成对数据库的增删改查,只需要通过这个对象向数据库发送增删改查语句即可. Statement对象的exe ...
- Java数据库连接--JDBC基础知识(操作数据库:增删改查)
一.JDBC简介 JDBC是连接java应用程序和数据库之间的桥梁. 什么是JDBC? Java语言访问数据库的一种规范,是一套API. JDBC (Java Database Connectivit ...
- JDBC核心技术(获取数据库链接、数据库事务、数据库链接池)
@ 目录 前言 数据的持久化 Java数据存储技术 JDBC介绍 JDBC体系结构 获取数据库链接 Driver接口 加载注册JDBC驱动 获取数据库链接 数据库链接方式(实例) 方式一:代码中显示出 ...
- JDBC——Java代码与数据库链接的桥梁
常用数据库的驱动程序及JDBC URL: Oracle数据库: 驱动程序包名:ojdbc14.jar 驱动类的名字:oracle.jdbc.driver.OracleDriver JDBC URL:j ...
- jmeter 性能测试 JDBC Request (查询数据库获取数据库数据) 的使用
JDBC Request 这个Sampler可以向数据库发送一个jdbc请求(sql语句),并获取返回的数据库数据进行操作.它经常需要和JDBC Connection Configuration配置原 ...
- Ubuntu jsp平台使用JDBC来连接MySQL数据库
Ubuntu 7.04 搭建Ubuntu jsp平台开发环境MySQL+tomcat+apache+j2sdk1.6在所有安装开始前先在Terminal中输入 rpm -q -a查看是否安装过rpm ...
- JDBC连接sql server数据库及其它
JDBC连接sql server数据库的步骤如下: 1.加载JDBC驱动程序: 在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机), 这通过java.lang.Class类的 ...
随机推荐
- Django开发 X-Frame-Options to deny 报错处理
本博客已停更,请转自新博客查看 https://www.whbwiki.com/318.html 错误提示 Refused to display 'http://127.0.0.1:8000/inde ...
- 大白话讲解如何解决HttpServletRequest的请求参数只能读取一次的问题
大家在开发过程中,可能会遇到对请求参数做下处理的场景,比如读取上送的参数中看调用方上送的系统编号是否是白名单里面的(更多的会用request中获取IP地址判断).需要对请求方上送的参数进行大小写转换或 ...
- 在 macOS 上运行无限许可的 Nessus 10
请访问原文链接:https://sysin.org/blog/nessus-unlimited-on-macos/,查看最新版.原创作品,转载请保留出处. 作者:gc(at)sysin.org,主页: ...
- 『学了就忘』Linux基础命令 — 37、Linux中挂载操作的相关命令
目录 1.mount命令介绍 (1)mount命令说明 (2)mount命令格式 2.mount命令示例 3.mount -a命令说明 4.-o特殊选项说明 5.exec/noexec选项说明 挂载就 ...
- 2021广东省强网杯WriteUp
个人赛 网络诈骗 参考 https://github.com/Heyxk/notes/issues/1 先把EnMicroMsg.db提出来 CompatibleInfo.cfg是0kb,用第一种方法 ...
- Docker Compose 容器编排 NET Core 6+MySQL 8+Nginx + Redis
环境: CentOS 8.5.2111Docker 20.10.10Docker-Compose 2.1.0 服务: db redis web nginx NET Core 6+MySQL 8+N ...
- [loj6736]最小连通块
定义$f(S)$表示点集$S$的最小连通块 做法1 通过对所有节点判定,可以在$n$次询问中求出具体的$f(S)$ 对于$x\ne y$,显然$(x,y)\in E$当且仅当$f(\{x,y\})=\ ...
- [loj3276]遗迹
假设已知$a_{i}$,通过以下方式确定$b_{i}$:从后往前枚举每一个数$i$,先令$b_{i}=a_{i}$,再将$b_{i}$不断减1直至不存在$j>i$且$b_{i}=b_{j}$或$ ...
- 一文明白CDN加速是个啥
作者:IT王小二 博客:https://itwxe.com 不知不觉三个月没更新了,这三个月诸事繁忙啊!最近没那么忙了,开始恢复更新. 一.CDN简介 CDN(Content Delivery Net ...
- 下载安装wps后去除监控
下载wps之后发现wps一直对我的电脑进行监控,占用着我的cpu和内存,我要把它清理出去.... 控制面板→管理工具→任务计划程序→任务计划程序库,有两个wps的任务计划,可以根据属性看到文件地址 C ...