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类的 ...
随机推荐
- idea中的maven模块变成灰色
问题 在使用idea的过程中,遇到其中一个maven模块变成灰色,如下所示: 解决方法 方法一 造成这个的原因可能是忽略了maven模块,可以尝试如下解决方法:在idea中maven中找到ignore ...
- Python基础(sorted)
arr1 = [1,2,3,-30,4,5,-6] arr2 = sorted(arr1)#sorted()函数就可以对list进行排序 arr3 = sorted(arr1,key=abs)#可以接 ...
- Mysql5.7和8.0版本的文件夹版安装教程(整合版,超详细)
安装Mysql(5.7版本) 下载地址在这里可以自选版本,找到合适的版本进行下载 解压安装包 配置环境变量 win+r 输入 sysdm.cpl 点击高级 点击环境变量 新建一个系统变量 变量名为MY ...
- <C#任务导引教程>练习二
//6,goto语句求1+++100之和using System;class Program{ static void Main() { int i=1,sum=0; ...
- [loj6518]序列
参考ExtremeSpanningTrees,考虑优化整体二分时求$g_{i}\in \{w_{mid},w_{mid+1}\}$的最优解 首先题目有一个条件似乎没有写出来,是保证$l\le k\le ...
- 1、使用ValueOperations操作redis(String字符串)
文章来源:https://www.cnblogs.com/shiguotao-com/p/10559997.html 方法 c参数 s说明 void set(K key, V value); ke ...
- 【JavaSE】格式化输出
Java格式化输出 2019-07-06 11:35:55 by冲冲 1. 输出字符串 %s 1 /*** 输出字符串 ***/ 2 // %s表示输出字符串,也就是将后面的字符串替换模式中的%s ...
- linux新增定时脚本
crontab -e 然后新增: 0 * * * * sh /usr/local/redis/copy/redis_rdb_copy_hourly.sh 控制台回显"crontab:inst ...
- Servlet jsp maven 依赖包
servlet<dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servl ...
- springboot 配置多数据源实例代码(分包方式)
目录 1.数据库 2.pom与yml 2.1.pom中的依赖部分 2.2.yml数据库配置部分 3.数据源配置类 DataSourceConfig 3.1.DataSourceConfig1.java ...