JavaWeb零基础学习Day6——JDBC

一.JDBS

1.介绍

JDBC:就是使用Java语言操作关系型数据库的一套API

本质:

sun公司官方定义的一套操作所有关系型数据库的规范,即接口。

各个数据库厂商去实现这套接口,提供数据库驱动jar包

可以使用这套(JDBS)编程。真正执行的代码是驱动jar包中的实现类。

2.入门程序

1)完成数据修改

java 复制代码
package org.junit.jupiter;

import org.junit.jupiter.api.Test;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Exception;
import java.sql.Statement;

public class JdbcTest {

    //JDBC入门程序
    @Test
    public  void  testUpdate() throws Exception {
        //1.导入数据库驱动
        Class.forName( "com.mysql.cj.jdbc.Driver" );//使用forName方法加载数据库驱动
        //2.获取数据库连接
        String url = "jdbc:mysql://localhost:3306/web01";
        String username = "root";
        String password = "1234";
        DriverManager.getConnection(url,username,password);
        //3.获取SQL语句执行对象
        Statement statement = connection.createStatement();
        //4.执行SQL语句
        int i = statement.executeUpdate("update account set money = 1000 where id = 1");
        System.out.println("sql执行完毕次数" + i);
        //5.释放资源
        Statment.close();
        connection.close();
    }
}

2)完成查询数据

需求:基于JDBC执行如下select语句,将查询语句封装到User对象中

SQL:select * from user where username = "daqiao" and password = "123456"

AI提示词:

你是一名java开发工程师,帮我基于JDBC程序来操作数据库,执行如下SQL语句:select id,username,password,name,age from user where username = 'daqiao' and password = '123456';

并将查询的每一行记录,都封装到实体类User中,然后将User对象的数据输出到控制台中。

User 实体类属性如下:

@Data

@NoArgsConstructor

@AllArgsConstructor

public class User {

private Integer id; //ID

private String username; //用户名

private String password; //密码

private String name; //姓名

private Integer age; //年龄

}

java 复制代码
import java.sql.*;

public class JdbcUserQuery {
    public static void main(String[] args) {
        // 数据库连接信息
        String url = "jdbc:mysql://localhost:3306/你的数据库名?useSSL=false&serverTimezone=UTC&characterEncoding=utf8";
        String username = "数据库用户名";
        String password = "数据库密码";
        
        // SQL查询语句
        String sql = "select id,username,password,name,age from user where username = 'daqiao' and password = '123456'";
        
        Connection conn = null;
        PreparedStatement pstmt = null;
        ResultSet rs = null;
        
        try {
            // 1. 加载数据库驱动(MySQL 8.0+使用com.mysql.cj.jdbc.Driver)
            Class.forName("com.mysql.cj.jdbc.Driver");
            
            // 2. 获取数据库连接
            conn = DriverManager.getConnection(url, username, password);
            
            // 3. 创建PreparedStatement对象
            pstmt = conn.prepareStatement(sql);
            
            // 4. 执行查询,获取结果集
            rs = pstmt.executeQuery();
            
            // 5. 处理结果集
            while (rs.next()) {
                // 创建User对象
                User user = new User();
                
                // 设置属性值
                user.setId(rs.getInt("id"));
                user.setUsername(rs.getString("username"));
                user.setPassword(rs.getString("password"));
                user.setName(rs.getString("name"));
                user.setAge(rs.getInt("age"));
                
                // 输出用户信息
                System.out.println("查询到用户信息:");
                System.out.println("ID: " + user.getId());
                System.out.println("用户名: " + user.getUsername());
                System.out.println("密码: " + user.getPassword());
                System.out.println("姓名: " + user.getName());
                System.out.println("年龄: " + user.getAge());
            }
            
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
            System.out.println("数据库驱动加载失败");
        } catch (SQLException e) {
            e.printStackTrace();
            System.out.println("数据库操作异常");
        } finally {
            // 6. 关闭资源(按ResultSet ->PreparedStatement->Connection的顺序关闭)
            try {
                if (rs != null) rs.close();
                if (pstmt != null) pstmt.close();
                if (conn != null) conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

模板化操作,AI可替代,不需要重复写

3.预编译SQL

相关推荐
Sayuanni%35 小时前
初阶_多线程1(线程含义与关键属性)
java
程序媛徐师姐5 小时前
Java基于微信小程序的模拟考试系统,附源码+文档说明
java·微信小程序·java模拟考试系统小程序·模拟考试微信小程序·模拟考试系统小程序·模拟考试小程序·java模拟考试小程序
難釋懷5 小时前
Lua脚本解决多条命令原子性问题
开发语言·lua
CoderCodingNo5 小时前
【GESP】C++ 二级真题解析,[2025年12月]第一题环保能量球
开发语言·c++·算法
疯狂敲代码的老刘5 小时前
JDK 1.6到25 全版本网盘合集 (Windows + Mac + Linux)
java·linux·windows·macos·jdk
夕除5 小时前
js--15
java·jvm·spring
独好紫罗兰5 小时前
对python的再认识-基于数据结构进行-a005-元组-CRUD
开发语言·数据结构·python
曾经的三心草6 小时前
redis-9-集群
java·redis·mybatis
sun03226 小时前
【架构基础】Spring中的PropertySourcesPlaceholderConfigurer介绍 (并非新知识,比较古老的一种使用方式)
java·spring·架构
学编程的闹钟6 小时前
95【给图片添加跳转链接】
学习