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类的 ...
随机推荐
- 升级JDK8的坎坷之路
为更好的适应JAVA技术的发展,使用更先进及前沿的技术.所以推出将我们现在使用的JDK1.6(1.7)及tomcat6(7)升级至JDK1.8及tomcat8,使我们的系统获得更好的性能,更好适应未来 ...
- 写给初学者的Linux errno 错误码机制
不同于Java的异常处理机制, 当你使用C更多的接触到是基于错误码的异常机制, 简单来说就是当调用的函数发生异常时, 程序不会跳转到一个统一处理异常的地方, 取而代之的是返回一个整型错误码. 可能会有 ...
- 常见yaml写法-job
apiVersion: batch/v1 kind: Job metadata: name: job-demo spec: template: metadata: name: job-demo spe ...
- 7.深入TiDB:range 范围计算优化
本文基于 TiDB release-5.1进行分析,需要用到 Go 1.16以后的版本 我的博客地址:https://www.luozhiyun.com/archives/605 这篇文章首先会回顾一 ...
- 问题 K: 找点
题目描述 上数学课时,老师给了LYH一些闭区间,让他取尽量少的点,使得每个闭区间内至少有一个点.但是这几天LYH太忙了,你们帮帮他吗? 输入 多组测试数据. 每组数据先输入一个N,表示有N个闭区间(N ...
- Python基础(数据类型与变量、字符串和编码)
#!/usr/bin/env python3 # -*- coding: utf-8 -*- # name = 200 # if name > 100: # print(name,'大于100' ...
- Windows漏洞:MS08-067远程代码执行漏洞复现及深度防御
摘要:详细讲解MS08-067远程代码执行漏洞(CVE-2008-4250)及防御过程 本文分享自华为云社区<Windows漏洞利用之MS08-067远程代码执行漏洞复现及深度防御>,作者 ...
- [ccKILLKTH]Killjee and k-th letter
建立后缀树(即反序插入字符串的parent树),然后可以发现按照dfs序排列满足其反串按字典序从小到大排列,那么就可以维护出每一刻子树的串长和,然后直接在dfs序上二分确定节点,再在节点内部乱搞即可求 ...
- 【论文阅读】Beyond OCR + VQA: 将OCR融入TextVQA的执行流程中形成更鲁棒更准确的模型
论文题目:Beyond OCR + VQA: Involving OCR into the Flow for Robust and Accurate TextVQA 论文链接:https://dl.a ...
- Timer定时器的使用
import java.util.Timer; import java.util.TimerTask; public class Demo2 { //执行时间,时间单位为毫秒,读者可自行设定,不得小于 ...