当前位置: 首页 > news >正文

JDBC 基础

目录

一 基础概念

二 项目的搭建

1 注册驱动

2 Connection

3 Statement

4 PreparedStatement(*)

5 ResultSet

三 基于PreparedStatement实现CRUD

查找示例:(代码实现)

插入示例:(代码实现)


一 基础概念

JDBC:javaDatabase Connectivity,意为数据库连接

JDBC是Java提供的独立于任何数据库管理系统的API.

Java提供接口规范,由各个数据库厂商提供结构的实现,厂商的实现类封装成jar文件,也就是俗称的数据库驱动jar包

二 项目的搭建

驱动jar包

MySQL :: Download MySQL Connector/J (Archived Versions)

在项目目录之下新建一个lib目录,将选定的jar包粘贴到目录下,将lib添加成

代码实现

package com.ax.base;

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

public class JDBCQuick {
    public static void main(String[] args) throws Exception {

        // 1 注册驱动(8.0版本之后的)
        Class.forName("com.mysql.cj.jdbc.Driver");

        // 2 获取连接对象
        String url = "jdbc:mysql://localhost:3306/itheima";
        String username = "root";
        String password = "tan2179432748";
        Connection connection = DriverManager.getConnection(url, username, password);

        // 3 获取执行SQL语句的对象
        Statement statement = connection.createStatement();

        // 4 编写SQL语句,并执行,以及接收返回的结果集
        String sql_1 = "select * from dept";
        ResultSet resultSet = statement.executeQuery(sql_1);

        //处理结果集
        while (resultSet.next()) {
            int id = resultSet.getInt("id");
            String name = resultSet.getString("name");
            System.out.println(id + " " + name);
        }
        //释放资源(先开后关)
        statement.close();
        connection.close();
        resultSet.close();
        System.out.println("执行成功");

    }
}

核心API的详解

1 注册驱动

实现自动注册

2 Connection

3 Statement

 SQL注入

4 PreparedStatement(*)

具体实现:

package com.ax.base;

import java.sql.*;
import java.util.Scanner;

public class JDBCqq {
    public static void main(String[] args) throws Exception {
        // 获取连接对象
        Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/itheima", "root", "tan2179432748");

        PreparedStatement preparedStatement = connection.prepareStatement("select * from tb_user_edu where degree = ?");

        System.out.println("输入查询的学历");
        Scanner scanner = new Scanner(System.in);
        String str = scanner.nextLine();

        //为问号占位符赋值,并执行SQL语句,接收返回的结果集
        preparedStatement.setString(1,str);
        ResultSet resultSet = preparedStatement.executeQuery();

        //处理结果集
        while (resultSet.next()) {
            int id = resultSet.getInt("id");
            String degree = resultSet.getString("degree");
            String major = resultSet.getString("major");
            String school = resultSet.getString("primaryschool");
            String university = resultSet.getString("university");
            System.out.println(id + " " + degree + " " + major + " " + school + " " + university);
        }
        //释放资源(先开后关)
        connection.close();
        resultSet.close();
        System.out.println("执行成功");

    }
}

运行结果:

5 ResultSet

三 基于PreparedStatement实现CRUD

  • 1 DriverManager.getConnection()
  • 2 1->obj.prepareStatement('sql')
  • 3 2->obj.set数据类型(index,"数据")
  • 4 2->obj.excuteUpdate()/2->obj.excuteQuery()
  • 增删改都是excuteUpdate()/查询是excuteQuery()

查找示例:(代码实现)

package com.ax.base;

import java.sql.*;

public class JDBCaa {
    public static void main(String[] args) throws SQLException {

        // 获取连接对象(连接到本地的itheima数据库)
        Connection connection = DriverManager.getConnection("jdbc:mysql://localhost/itheima", "root", "tan2179432748");

        // 创建预编译SQL对象,同时防止了SQL注入攻击,防止用户输入非法字符
        PreparedStatement preparedStatement = connection.prepareStatement("select id,degree from tb_user_edu where degree = ?");

        // 绑定参数将第一个占位符替换为本科
        preparedStatement.setString(1, "本科");

        // 执行查询并获取结果集,返回满足条件的所有记录
        ResultSet resultSet = preparedStatement.executeQuery();

        // 遍历结果集
        while (resultSet.next()) {
            int id = resultSet.getInt("id");
            String degree = resultSet.getString("degree");
            System.out.println(id + " " + degree);
        }

        // 释放资源(先开后关)
        connection.close();
        resultSet.close();
        System.out.println("执行成功");
        
    }
}

插入示例:(代码实现)

package com.ax.base;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;

public class JDBCUpdate {
    public static void main(String[] args) throws SQLException {

        //获取连接对象(连接到本地的itheima数据库)
        Connection connection = DriverManager.getConnection("jdbc:mysql://localhost/itheima", "root", "tan2179432748");

        // 创建预编译SQL对象,同时防止了SQL注入攻击,防止用户输入非法字符
        PreparedStatement preparedStatement = connection.prepareStatement("insert into tb_user_edu values (?,?,?,?,?,?,?)");

        // 绑定参数将占位符替换为指定的参数
        preparedStatement.setInt(1,5);
        preparedStatement.setString(2,"大专");
        preparedStatement.setString(3,"软件工程");
        preparedStatement.setString(4,"安师大附属小学");
        preparedStatement.setString(5,"安师大附属中学");
        preparedStatement.setString(6,"安徽师范大学");
        preparedStatement.setInt(7,5);

        // 执行SQL语句,返回受影响的行数
        int i = preparedStatement.executeUpdate();

        // 判断是否添加成功
        if (i>0){
            System.out.println("添加成功");
        }else {
            System.out.println("添加失败");
        }

        //资源示范(先开后关)
        preparedStatement.close();
        connection.close();



    }
}

相关文章:

  • c++中如何打印未知类型对象的类型
  • 学习大模型开发要学什么
  • ssh和rdp踩坑
  • 激活函数表示和应用
  • cFosSpeed 低延迟网络加速器 | 游戏/VoIP 专属优化
  • 制造业数字化实践案例丨国内某大型物联网企业数字化项目管理系统,赋能品牌和生态战略落地
  • 51c自动驾驶~合集52
  • 字节火山引擎-大模型声音复刻,流式语音合成接口
  • GoFly框架中集成BoltDB和badferDB两个Go语言嵌入式键值数据库下载即用(调用简单)
  • windows下安装pyenv+virtualenv+virtualenvwrapper
  • [AI 概念域] LangChain 核心组件概念解读(通俗解读)
  • 【动手学深度学习】基于Python动手实现线性神经网络
  • 计算机毕业设计Python+DeepSeek-R1大模型期货价格预测分析 期货价格数据分析可视化预测系 统 量化交易大数据 机器学习 深度学习
  • 【语音编解码】常用的基于神经网络的语音编解码方案对比
  • unity学习58:下拉列表框 dropdown的caption和options
  • 第002文-kali虚拟机安全与网络配置
  • 【每天认识一个漏洞】url重定向
  • 和鲸科技推出人工智能通识课程解决方案,助力AI人才培养
  • 【3D格式转换SDK】HOOPS Exchange技术概览(一):3D 数据处理高效能与定制化
  • RabbitMQ系列(一)架构解析
  • 东莞“超级”音乐节五一出圈背后:文旅热力何以澎湃经济脉动
  • 汪明荃,今生不负你
  • 深入贯彻中央八项规定精神学习教育中央第一指导组指导督导河北省见面会召开
  • 优化网络营商环境,上海严厉打击涉企网络谣言、黑灰产等违法犯罪
  • 多地跟进官宣下调公积金贷款利率,最低降至2.1%
  • 上海:下调个人住房公积金贷款利率