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

相关推荐
阿里嘎多学长2 小时前
2026-04-30 GitHub 热点项目精选
开发语言·程序员·github·代码托管
东风破1374 小时前
DM用户权限、表、约束等对象的基本操作,SQL日志的开启介绍
数据库·sql·dm达梦数据库
abcnull4 小时前
用javaparser做精准测试
java·ast·静态代码分析·精准测试·javaparser
叶小鸡4 小时前
Java 篇-项目实战-苍穹外卖-笔记汇总
java·开发语言·笔记
AI人工智能+电脑小能手4 小时前
【大白话说Java面试题】【Java基础篇】第22题:HashMap 和 HashSet 有哪些区别
java·开发语言·哈希算法·散列表·hash
我的xiaodoujiao4 小时前
API 接口自动化测试详细图文教程学习系列16--项目实战演练3
python·学习·测试工具·pytest
juniperhan4 小时前
Flink 系列第21篇:Flink SQL 函数与 UDF 全解读:类型推导、开发要点与 Module 扩展
java·大数据·数据仓库·分布式·sql·flink
ID_180079054734 小时前
Python 实现亚马逊商品详情 API 数据准确性校验(极简可用 + JSON 参考)
java·python·json
c++之路5 小时前
C++23概述
java·c++·c++23
时空系5 小时前
第10篇:继承扩展——面向对象编程进阶 python中文编程
开发语言·python·ai编程