一. statement对象

JDBC程序中的Connection用于代表数据库的链接;Statement对象用于向数据库发送SQL语句;ResultSet用于代表Sql语句的执行结果

  1. JDBC中的statement对象用于向数据库发送SQL语句,想完成对数据库的增删改查,只需要通过这个对象向数据库发送增删改查语句即可
  2. Statement对象的executeUpdate方法,用于向数据库发送增、删、改的sql语句,executeUpdate执行完后,将会返回一个整数(即增删改语句导致了数据库几行数据发生了变化)
  3. 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> &gt; <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> &gt; <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> &gt; <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的更多相关文章

  1. javaweb学习总结(三十三)——使用JDBC对数据库进行CRUD

    一.statement对象介绍 Jdbc中的statement对象用于向数据库发送SQL语句,想完成对数据库的增删改查,只需要通过这个对象向数据库发送增删改查语句即可. Statement对象的exe ...

  2. javaweb(三十三)——使用JDBC对数据库进行CRUD

    一.statement对象介绍 Jdbc中的statement对象用于向数据库发送SQL语句,想完成对数据库的增删改查,只需要通过这个对象向数据库发送增删改查语句即可. Statement对象的exe ...

  3. 十六:使用JDBC对数据库进行CRUD

    一.statement对象介绍 Jdbc中的statement对象用于向数据库发送SQL语句,想完成对数据库的增删改查,只需要通过这个对象向数据库发送增删改查语句即可. Statement对象的exe ...

  4. Java数据库连接--JDBC基础知识(操作数据库:增删改查)

    一.JDBC简介 JDBC是连接java应用程序和数据库之间的桥梁. 什么是JDBC? Java语言访问数据库的一种规范,是一套API. JDBC (Java Database Connectivit ...

  5. JDBC核心技术(获取数据库链接、数据库事务、数据库链接池)

    @ 目录 前言 数据的持久化 Java数据存储技术 JDBC介绍 JDBC体系结构 获取数据库链接 Driver接口 加载注册JDBC驱动 获取数据库链接 数据库链接方式(实例) 方式一:代码中显示出 ...

  6. JDBC——Java代码与数据库链接的桥梁

    常用数据库的驱动程序及JDBC URL: Oracle数据库: 驱动程序包名:ojdbc14.jar 驱动类的名字:oracle.jdbc.driver.OracleDriver JDBC URL:j ...

  7. jmeter 性能测试 JDBC Request (查询数据库获取数据库数据) 的使用

    JDBC Request 这个Sampler可以向数据库发送一个jdbc请求(sql语句),并获取返回的数据库数据进行操作.它经常需要和JDBC Connection Configuration配置原 ...

  8. Ubuntu jsp平台使用JDBC来连接MySQL数据库

    Ubuntu 7.04 搭建Ubuntu jsp平台开发环境MySQL+tomcat+apache+j2sdk1.6在所有安装开始前先在Terminal中输入 rpm -q -a查看是否安装过rpm ...

  9. JDBC连接sql server数据库及其它

    JDBC连接sql server数据库的步骤如下: 1.加载JDBC驱动程序: 在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机), 这通过java.lang.Class类的 ...

随机推荐

  1. Qt 使用大神插件快速创建树状导航栏

    前言 本博客仅仅记录自己的采坑过程以及帮助网友避坑,方便以后快速使用自定义控件,避免重复出错. 下载插件 大神 Github Qt 自定义控件项目地址:https://github.com/feiya ...

  2. k8s之mutating webhook + gin

    1.知识准备 1.Webhook 是一种用于接收准入请求并对其进行处理的 HTTP 回调机制 2.Webhook 接收来自apiserver的回调,对回调资源做一些校验.注入.修改元数据等工作 3.来 ...

  3. Calendar.set方法获取前一天的当前时刻

    获取前几天的当前时刻的时间方法 Calendar cal = Calendar.getInstance(); Date date = new Date();// 获取当前时间 cal.setTime( ...

  4. 实验1:SDN拓扑拓扑实验

    一.实验目的 能够使用源码安装Mininet: 能够使用Mininet的可视化工具生成拓扑: 能够使用Mininet的命令行生成特定拓扑: 能够使用Mininet交互界面管理SDN拓扑: 能够使用Py ...

  5. 关于如何在MyEclipse下修改项目名包名,以及类

    1.修改项目名,右键选择properties->web->web-Context-root修改名称或者直接按F2修改.2,修改包名,右键选择Refactor->rename修改名称即 ...

  6. 躺平吧,平铺的窗口「GitHub 热点速览 v.21.47」

    作者:HelloGitHub-小鱼干 用 macOS 系统经常会遇到的一个问题便是多开窗口如何快速找寻的问题,本周特推项目 yabai 便是来解决这个问题的.直接把所有窗口平铺,是不是很"正 ...

  7. [bzoj3351]Regions

    这道题有一种较为暴力的做法,对于每个点枚举所有与r2为该属性的询问并加以修改,最坏时间复杂度为o(nq),然而是可过的(97s) 发现只有当r2相同的询问数特别多时才会达到最坏时间复杂度,因此如果删除 ...

  8. Study Blazor .NET(三)组件

    翻译自:Study Blazor .NET,转载请注明. 关于组件 blazor中组件的基础结构可以分为以下3部分, //Counter.razor //Directives section @pag ...

  9. 规格模式(Specification Pattern)

    本文节选自<设计模式就该这样学> 1 规格模式的定义 规格模式(Specification Pattern)可以认为是组合模式的一种扩展.很多时候程序中的某些条件决定了业务逻辑,这些条件就 ...

  10. springboot启动流程1

    public SpringApplication(ResourceLoader resourceLoader, Class<?>... primarySources) { this.res ...