Java JDBC

本文详细介绍了Java JDBC,包括其定义、相关类库、接口作用、JDBC编程六步、Statement与PreparedStatement的区别及其应用场景,强调了PreparedStatement在防止SQL注入方面的优势。此外,还讨论了JDBC事务处理和封装JDBC工具类的重要性。
摘要由CSDN通过智能技术生成

1、什么是JDBC?

Java DataBase Connectivity

在java语言中编写sql语句,对mysql数据库中的数据进行CRUD操作。

JDBC就是一堆接口,负责连接数据库的.

2、JDBC相关的类库在哪里?

java.sql.*;

3、JDBC本质上是一堆什么呢?

java.sql.*;这个包下都是JDBC的接口,SUN公司制定的!

JDBC是体现“接口作用”的非常经典的例子。

JDBC降低了耦合度,提高了扩展力

对于java程序员来说,不需要关心数据库是哪个品牌。只要面向JDBC接口编程就行!


JDBC整个程序的结构当中有三波人!

  1. 第一波:SUN公司,负责制定JDBC接口。这些接口已经写好了,在java.sql.*;
  2. 第二波:java.sql.*下面的所有接口都要有实现类,这些实现类是数据库厂家编写的【简称jar包】。
  3. 第三波:我们java程序员,面向JDBC接口写代码就行!

4、JDBC开发之前的准备工作?

eg. IDEA工具:

创建lib文件夹,把jar包复制进去,然后鼠标右击jar包,选择add as library…
在这里插入图片描述

5、JDBC编程六步

  1. 注册驱动
  2. 获取链接
  3. 获取数据库对象
  4. 执行SQL语句
  5. 处理查询结果集【注: 只有执行select语句才有第5步】
  6. 释放资源

6、JDBC代码模板

Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try {
   
    //1、注册驱动
    Class.forName("com.mysql.jdbc.Driver");
    //2、获取数据库连接
    conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/数据库名", "用户名", "密码");
    //3、获取数据库对象
    stmt = conn.createStatement();
    //4、执行sql语句
    String sql = "SQL语句";
    //int count = stmt.executeUpdate(sql);//执行insert、update、delete时用
    rs = stmt.executeQuery(sql);//执行select时用
    //5、处理操作结果集
    while (rs.next()){
   
        //操作
    }
} catch (Exception e) {
   
    e.printStackTrace();
} finally {
   
    //6、释放资源
    if (rs != null) {
   
        try {
   
            rs.close();
        } catch (SQLException e) {
   
            e.printStackTrace();
        }
    }
    if (stmt != null) {
   
        try {
   
            stmt.close();
        } catch (SQLException e) {
   
            e.printStackTrace();
        }
    }
    if (conn != null) {
   
        try {
   
            conn.close();
        } catch (SQLException e) {
   
            e.printStackTrace();
        }
    }
}

9、Statement和PreparedStatement的区别

9.1、前言:什么是SQL注入?

模拟用户登录:
	用户名:fdsa
	密码:fdsa'or'1'='1
	select * from t_user where login_name='fdsa' and login_pud='fdsa' or '1'='1'
登录成功!

以上随意输一个用户名和密码,登录成功了,这种现象被称为SQL注入现象!

9.1.1、号致SQL注人的想本原团是什么?怎么解决?

导致SQL注人的根本原因是:用户不是一般的用户,用户是懂得程序的,输入的用户名信息以及密码信息中含有SQL语句的关键字,这个SQL语句的关键字和底层的SQL语句进行“字符串拼接”,导致原SQL语句的含义被扭曲了。

最最最最最最主要的原因是:用户提供的信息参与了SQL 语句的编译

9.1.2、主要团素是

这个程序是进行的字符的拼接,然再进行SQL语句的编译,正好被注入。|

9.2、Statement【父接口】

java.sql.Statement接口的特点:先进行字符的拼接,然后再进行sqL语句的编译
优点: 使用statement 可以进行sql 语句的拼接。
缺点: 因为拼接的存在,导致可能给不法分子机会。

9.3、PreparedStatement【子接口】【可以避免SQL注入】

java.sql.PreparedStatement接口的特点:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值