高效掌握JDBC技术(一)

✅作者简介:CSDN内容合伙人,喜欢学习后端语言的大学生,同时也是一位新晋万粉博主
✨个人社区:微凉秋意社区
🔥系列专栏:JDBC技术
📃推荐一款模拟面试、刷题神器👉注册免费刷题

🔥前言

以前学习的数据库连接技术: JDBC,好久不使用都有些遗忘了,所以开了一个专栏来分享有关的知识。我会从基础概念到实战一步一步来,循序渐进的高效的记录复习jdbc知识,打下夯实的基础。如有感兴趣的朋友也可以订阅专栏一同学习进步哦。

JDBC:Java数据库连接技术

  • 通过Java后台代码连接数据库对数据库内容进行增删改查

1、为什么要学习JDBC?

navicat也可以连接数据库对数据进行增删改查,但是并不能定制化用户数据,所以并不完全使用实战开发

但是 JDBC可以通过后台的其他代码完整用户数据的定制化

2、JDBC涉及到的API

3、JDBC的特点

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:cbd04152-1014-4002-9394-6b0278ea13d5

[En]

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:2e3230d7-c6b1-49d2-9c99-278ae0a02a1b

– JDBC中只有接口,并没有提供实现

1、navicat操作数据库的步骤

2、JDBC操作数据库的六大步

3、JDBC的步骤实现

  • ResultSet:结果集
  • 底层原理:指针操作,类似 Iterator迭代器
  • next():判断是否存有下一元素
  • getXxx(int类型的列的顺序,从1开始):获取某个字段的值
  • getXxx(“字段名”):获取某个字段的值
  • Xxx:表示字段的数据类型,首字母大写
  • 指定字段名更常用,更清晰

        String sql = "select * from t_student";
        PreparedStatement ps = conn.prepareStatement(sql);

        ResultSet rs=ps.executeQuery();

        while (rs.next()){

            int stuId = rs.getInt(1);
            String stuName = rs.getString(2);
            int stuAge = rs.getInt(3);
            String stuSex = rs.getString("stu_sex");
            String stuClass = rs.getString("stu_class");
            String stuplace = rs.getString("stu_place");

            System.out.println(stuId+" "+stuName+" "+stuAge+" "+stuSex+" "+stuClass+" "+stuplace);
        }

        rs.close();
        ps.close();
        conn.close();

  • 将用户输入的数据,绑定到SQL中

1、字符串拼接

package com.bz.test;

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

        Scanner sc = new Scanner(System.in);
        System.out.println("请输入你的姓名:");
        String name=sc.next();
        System.out.println("请输入你的年龄:");
        int age=sc.nextInt();
        System.out.println("请输入你的性别(男/女):");
        String sex=sc.next();
        System.out.println("请输入你的年级:");
        String clazz=sc.next();
        System.out.println("请输入你的地区:");
        String place=sc.next();

        String sql = "insert into t_student(stu_name,stu_age,stu_sex,stu_class,stu_place) VALUES('"+name+"',"+age+",'"+sex+"','"+clazz+"','"+place+"')";

        System.out.println(sql);

        PreparedStatement ps = conn.prepareStatement(sql);

        int n = ps.executeUpdate();
        if(n>0){
            System.out.println("添加成功");
        }else{
            System.out.println("添加失败");
        }

    }
}

2、 ?占位符

  • 是JDBC中的一种特殊语法,作用为进行数据绑定
  • 使用方法:
  • 在需要使用用户数据的位置,通过 ?代替(占位)
  • 在发送SQL之前,给占位符依次赋值
  • *setXxx(占位符的序号(从1开始),占位符对应的值)
package com.bz.test;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.util.Scanner;

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

        Class.forName("com.mysql.cj.jdbc.Driver");

        String username = "root";

        String pwd = "root";

        String url = "jdbc:mysql://localhost:3306/2109?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai";
        Connection conn = DriverManager.getConnection(url, username, pwd);

        Scanner sc = new Scanner(System.in);
        System.out.println("请输入你的姓名:");
        String name=sc.next();
        System.out.println("请输入你的年龄:");
        int age=sc.nextInt();
        System.out.println("请输入你的性别(男/女):");
        String sex=sc.next();
        System.out.println("请输入你的年级:");
        String clazz=sc.next();
        System.out.println("请输入你的地区:");
        String place=sc.next();

        String sql = "insert into t_student(stu_name,stu_age,stu_sex,stu_class,stu_place) VALUES(?,?,?,?,?)";

        PreparedStatement ps = conn.prepareStatement(sql);

        ps.setString(1,name);
        ps.setInt(2,age);
        ps.setString(3,sex);
        ps.setString(4,clazz);
        ps.setString(5,place);

        int n = ps.executeUpdate();
        if(n>0){
            System.out.println("添加成功");
        }else{
            System.out.println("添加失败");
        }

        ps.close();
        conn.close();
    }
}

  • SQL注入攻击:利用填写数据巧妙使SQL语句中的某些判断条件失效

方式特点使用场景实战建议字符串拼接可能被SQL注入攻击攻击可以拼接表名、字段名、关键字需要拼接关键字时使用,如:排序?占位符可以防止SQL注入攻击不能对表名、字段名、关键字占位通常使用都是占位符

可能出现的异常:

解决方案1:

解决方案2:

实战建议:

方案1+方案2

Original: https://blog.csdn.net/m0_58618795/article/details/126530872
Author: 微凉秋意
Title: 高效掌握JDBC技术(一)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/561450/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球