JDBC(2):JDBC对数据库进行CRUD

一. 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();
        }
    }
}




}


    <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);
    }
}




}


<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);
    }
}

在这里插入图片描述

posted @   edda_huang  阅读(149)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示

目录导航