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 分钟前
C++ 入门核心知识点(从 C 过渡到 C++ 基础)
开发语言·c++·经验分享·visual studio
7***374510 分钟前
DeepSeek在文本分类中的多标签学习
学习·分类·数据挖掘
7***374522 分钟前
Java设计模式之工厂
java·开发语言·设计模式
jiushun_suanli28 分钟前
量子纠缠:颠覆认知的宇宙密码
经验分享·学习·量子计算
上不如老下不如小37 分钟前
2025年第七届全国高校计算机能力挑战赛初赛 Python组 编程题汇总
开发语言·python·算法
w***42438 分钟前
SQL-Server链接服务器访问Oracle数据
服务器·sql·oracle
程序员小白条1 小时前
你面试时吹过最大的牛是什么?
java·开发语言·数据库·阿里云·面试·职场和发展·毕设
charlie1145141911 小时前
勇闯前后端Week2:后端基础——Flask API速览
笔记·后端·python·学习·flask·教程
折翅嘀皇虫1 小时前
fastdds.type_propagation 详解
java·服务器·前端
小年糕是糕手1 小时前
【C++】类和对象(二) -- 构造函数、析构函数
java·c语言·开发语言·数据结构·c++·算法·leetcode