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类的 ...
随机推荐
- MSSQL SQL注入 总结
0x00 MSSQL 基础 MSSQL系统自带库和表 系统自带库 MSSQL安装后默认带了6个数据库,其中4个系统级库:master,model,tempdb和msdb:2个示例库:Northwind ...
- Python打包成exe,文件太大问题解决办法
Python打包成exe,文件太大问题解决办法 原因 解决办法 具体步骤 情况一:初次打包 情况二:再次打包 原因 由于使用pyinstaller打包.py文件时,会把很多已安装的无关库同时打包进去, ...
- Linux 下权限的管理
Linux 下权限的管理 我们都知道,Linux系统对于用户的权限管理是十分严格的. 那么,我们就来具体了解一下. 一. 用户 在Linux中按照类型用户分为两种:1.超级用户 2.普通用户 那么它们 ...
- EDG夺冠!用Python分析22.3万条数据:粉丝都疯了!
一.EDG夺冠信息 11月6日,在英雄联盟总决赛中,EDG战队以3:2战胜韩国队,获得2021年英雄联盟全球总决赛冠军,这个比赛在全网各大平台也是备受瞩目: 1.微博热搜第一名,截止2021-11-1 ...
- 开发中常见的@NotNull,@NotBlank,@NotEmpty注解的区别
开发中常看见@NotNull,@NotBlank,@NotEmpty三个注解,但却没有深入了解过,下面介绍一下他们的应用场景和区别 @NotNull:主要用在基本数据类型上(Int,Integer,D ...
- ES6基础知识(Promise 对象)
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- JVM 是用什么语言写的?
JAVA中就虚拟机是其它语言开发的,用的是C语言+汇编语言 基于此之上就是JAVA本身了 虚拟机只起到解析作用另外,JAVA并不比C语言慢,说JAVA慢一般是九十年代那时候的JAVA, 而现在 在 ...
- [uoj76]懒癌
为了方便,称患有懒癌的狗为"坏狗" 记$Q_{i}$为第$i$个人能观察的狗集合,$S$为坏狗集合,那么第$k$天第$i$个人能得到的信息有且仅有$S\ne \empty$.$S\ ...
- Spring Cloud Gateway修改请求和响应body的内容
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
- gantt甘特图可拖拽、编辑(vue、react都可用 highcharts)
前言 Excel功能强大,应用广泛.随着web应用的兴起和完善,用户的要求也越来越高.很多Excel的功能都搬到了sass里面.恨不得给他们做个Excel出来...程序员太难了... 去年我遇到了 ...