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

相关推荐
a1117761 小时前
2FA 验证码生成器(github登录验证 app)
笔记·学习
我的xiaodoujiao2 小时前
API 接口自动化测试详细图文教程学习系列32--Allure测试报告2
python·学习·测试工具·pytest
人邮异步社区2 小时前
怎么把C语言学到精通?
c语言·开发语言
心平气和量大福大2 小时前
C#-WPF-控件-TextBox 数据绑定
开发语言·c#·wpf
ttwuai3 小时前
Cursor 生成 CRUD 后,Go 后台接口别只测 200:JWT、RBAC 和 tenant_id 怎么验
开发语言·后端·golang
维天说3 小时前
CLI-Switch 2026年3月版历史设计:Hook、TTY 隔离与 JSON 状态
java·服务器·json
破碎的南瓜3 小时前
sqli--sql注入过关笔记(1,2,3,4,5,9)
数据库·笔记·sql
এ慕ོ冬℘゜3 小时前
前端基础:什么是时间戳?JS获取时间戳三种方法与实战用途
开发语言·前端·javascript
执明wa3 小时前
LayoutInflater详解: XML是如何变成View的?
android·xml·开发语言·android studio
一次旅行3 小时前
Python+大模型端到端自动化日报系统
开发语言·python·自动化