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

Java期末复习JDBC|网课笔记+校课总结

目录

1、概念

2、JDBC步骤

JDBC的基本步骤:

1、加载数据库驱动:通常使用Class类的forName()静态方法来加载驱动。

2、通过DriverManager获取数据库连接:需要传入3个参数:数据库URL、登陆数据库的用户名和密码。

3、通过Connection对象创建Statement对象:Connection创建Statement的方法有createStatement()、prepareStatement(Stringsql)和prepareCall(Stringsql)。

4、使用Statement执行SQL语句:所有的Statement都有execute()、executeUpdate()和executeQuery()这三个方法来执行SQL语句。

Statement对象的功能:提供了多种方法来执行SQL语句,包括但不限于:(1)executeQuery(String sql):执行SQL查询语句,返回一个ResultSet对象。(2)executeUpdate(String sql):执行SQL插入、更新或删除语句,返回受影响的行数。(3)execute(String sql):执行SQL语句,如果该语句是一个查询则返回一个ResultSet对象,否则返回true表示执行成功。

5、操作结果集:

JDBC代码步骤:

3、代码框架

4、API

1、 DriverManager(驱动管理类):

2、connection 作用:

 3、Statement作用:执行SQL语句

4、ResultSet(结果集对象)作用

5、PreparedStatement作用:预编译Sql的对象,预防SQL注入问题

 5、校课总结


1、概念

JDBC:Java DataBase Connectivity.

使用java语言操作所有关系型数据库的一套API。同一套Java代码,操作不同的关系型数据库。JDBC相当于一个接口,不同的数据库都写一套自己的对应接口的实现(MySQL驱动、Oracle驱动、DB2驱动)

2、JDBC步骤

JDBC的基本步骤:

1、加载数据库驱动:

通常使用Class类的forName()静态方法来加载驱动。

  • 加载JDBC驱动的主要作用是将操作系统中正在运行的数据库进程(实例)转化成Java对象供Java程序使用,从而实现对数据库的操作。
  • 为什么需要加载驱动
    抽象数据库操作:JDBC将整个数据库驱动器在底层抽象成一个对象(即驱动器对象),所有对数据库的操作都可以通过该对象进行。
  • 实现多数据库支持:JavaSQL框架允许多个数据库驱动程序,每个驱动程序都应该提供一个实现Driver接口的类。
2、通过DriverManager获取数据库连接:

需要传入3个参数:数据库URL、登陆数据库的用户名和密码。

  • DriverManager类是Java JDBC API中的一个核心类,主要用于管理和维护数据库驱动程序。它充当用户和数据库驱动程序之间的桥梁,确保应用程序能够成功连接到数据库并执行SQL语句。
  • 主要功能
  1. 管理数据库驱动程序:DriverManager负责加载和管理所有已注册的数据库驱动程序。建立数据库连接:提供静态方法getConnection(),用于建立与数据库的新连接。
  • 获取数据库连接的方法
  1. 使用DriverManager.getConnection() 方法通过DriverManager类的getConnection()方法,可以方便地获取数据库连接。该方法有两种形式:
  2. 直接传递JDBC URL、用户名和密码。
  3. 通过配置文件读取数据库连接参数,然后使用这些参数调用getConnection()方法
3、通过Connection对象创建Statement对象:

Connection创建Statement的方法有createStatement()、prepareStatement(Stringsql)和prepareCall(Stringsql)。

  • Statement对象是一个非常重要的组件,它主要用于执行SQL语句。通过Connection对象创建Statement对象的主要目的是为了与数据库进行交互,执行查询、更新和其他数据库操作
Connection conn = ...; // 获取数据库连接 
Statement stmt = conn.createStatement(); 

4、使用Statement执行SQL语句:

所有的Statement都有execute()、executeUpdate()和executeQuery()这三个方法来执行SQL语句。

Statement对象的功能:提供了多种方法来执行SQL语句,包括但不限于:(1)executeQuery(String sql):执行SQL查询语句,返回一个ResultSet对象。(2)executeUpdate(String sql):执行SQL插入、更新或删除语句,返回受影响的行数。(3)execute(String sql):执行SQL语句,如果该语句是一个查询则返回一个ResultSet对象,否则返回true表示执行成功。


5、操作结果集:

如果执行的SQL语句是查询语句,则执行结果将返回一个ResultSet对象,该对象里保存了SQL语句查询的结果。


6、回收数据库资源:

包括关闭ResultSet、Statement和Connection等资源。


需要注意的是,不同的数据库可能会有不同的驱动和URL格式,所以在实际使用时需要根据具体的数据库来进行相应的配置。
 

JDBC代码步骤:

0)创建工程,导入驱动jar包

1)注册驱动

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

2)获取链接

Connection conn=DriverManager.getConnection(url,usename,password);

3)定义SQL语句

String sql="SQL语句"

4)获取执行SQL语句

Statement stmt=conn.createStatement();

5)执行SQL

stmt.executeUpdate(sql);

6)处理返回结果

7)资源释放

3、JDBC代码框架

package com.ittheima.jdbc;

import java.sql.*;

public class JDBCDemo {
    public static void main(String[] args)throws Exception{
    //1、注册驱动
    Class.forName("com.mysql.jdbc.Driver");
    //2、获取连接
        String url="jadc:mysql://127.0.0.1:3306/db1"; //ip地址:端口号/数据库名称
        String username="";
        String password="";
        Connection conn=DriverManager.getConnection(url,username,password);//链接路径,用户名,密码
        //3、定义SQL
        String sql="update account set money=2000 where id=1";
        //4、获取执行sql的对象Statement
        Statement stmt=conn.createStatement();
        //5、执行sql
        int count=stmt.executeUpdate(sql);//受影响的行数
        //6、处理结果
        System.out.println(count);
        //7、释放资源
        stmt.close();
        conn.close();

    }
}

4、API

1、 DriverManager(驱动管理类):

注册驱动、获取连接。url:连接本机mysql且端口默认3306,可简化书写

2、connection 作用:

  • 获取执行SQL的对象
  • Statement createStatement();普通执行sql对象
  • PreparedStatement prepareStatement(sql);预编译SQL的执行AQL对象:防止SQL注入
  • CallableStatement prepareCall(sql);执行存储过程的对象
  •  事务管理
  • MySQL事务管理
  1. 开启事务:BEGIN;/START TRANSACTION;
  2. 提交事务:COMMIT
  3. 回滚事务:ROLLBACK
  • JDBC事务管理:
  1. setAutoCommit(Boolean autoCommit):true自动提交事务;false手动提交事务;
  2. 提交事务:commit();
  3. 回滚事务:rollback();
try{
//开启事务
conn.setAutoCommit(false);
//5.执行sql
//6.处理结果

//5.执行sql
//6.处理结果

//提交事务
conn.commit();
}catch(Exception throwables){
//回滚事务
conn.rollback();
throwables.printStackTrace();
}

 3、Statement作用:执行SQL语句

int executeUpdate(sql);执行DML、DDL语句(返回值:DML语句影响的行数,DDL执行成功也可能返回0)

ResultSet executeQuery(sql):执行DQL语句(返回值:ResultSet结果集对象)

4、ResultSet(结果集对象)作用

封装了DQL查询语句的结果。获取查询结果,有一个光标指向当前结果行。

boolean next()

xxx  getxxx 参数;【int getInt(参数)】

通常使用

while(r.next()){

//获取数据

r.getxxx(参数);

}

 

5、PreparedStatement作用:预编译Sql的对象,预防SQL注入问题

SQL注入:通过操作输入来修改事先定义好的SQL语句,用以达到执行代码对服务器进行攻击的方法。

可以理解为在输入账号密码之类的东西的时候,输入了一个脚本破解了密码,进而可以修改数据库,使数据库遭到损坏,更改,泄露。

1、获取PreparedStatement对象   使用'?'占位符代替

2、设置参数值:setXxx(参数,参数)给?赋值

3、执行SQL:executeUpdate();executeQuery();不需要再传递sql

 5、校课总结

代码 

import java.sql.*;
public class jdbc {
    public static void main(String[] args) {
        // 1. 注册驱动 
        // 使用Class.forName 方法加载数据库驱动类。这里的"sun.jdbc.odbc.JdbcOdbc.Driver" 是ODBC - JDBC桥接驱动类的名称。 
        // 这种方式在较新版本的JDBC中已经不推荐使用这种硬编码的方式来注册驱动,因为驱动会自动加载。 
        // 但在某些旧环境或特定需求下可能还会用到。 
        try {
            Class.forName("sun.jdbc.odbc.JdbcOdbc.Driver");
        } catch (ClassNotFoundException e) {
        }


        // 2. 获取连接 
        try {
            // 定义数据库连接的URL,这里的"jdbc:odbc:数据源名"表示使用ODBC数据源的JDBC连接。 
            // "数据源名"需要替换为实际在ODBC中配置的数据源名称。 
            String url = "jdbc:odbc:数据源名";
            // 使用DriverManager的getConnection方法获取数据库连接对象。 
            // 这个方法会根据提供的URL、用户名和密码(这里未显示密码部分,可能使用默认配置或无密码情况)建立连接。 
            Connection conn = DriverManager.getConnection(url);
            // 通过连接对象创建Statement对象,Statement对象用于执行SQL语句。 
            Statement s = conn.createStatement();
            // 使用Statement的executeUpdate方法执行一条更新SQL语句。 
            // 这里的语句是将表sc中id为1的记录的sno字段更新为100120。 
            s.executeUpdate("update  sc set sno=100120 where id=1");
            // 使用Statement的executeQuery方法执行一条查询SQL语句。 
            // 这里是查询sc表中的所有记录。 
            ResultSet r = s.executeQuery("select*from  sc");
            // 遍历查询结果集。 
            // 如果结果集中还有下一条记录,则执行循环体中的代码。 
            while (r.next())  {
                // 输出结果集中第一列的值,这里假设结果集的列是字符串类型。 
                System.out.print(r.getString(1)  + "");
                // 输出结果集中第二列的值。 
                System.out.print(r.getString(2)  + "");
                // 输出结果集中第三列的值。 
                System.out.print(r.getString(3)  + "");
                // 输出结果集中第四列的值。 
                System.out.print(r.getString(4)  + "");
            }
            // 关闭Statement对象,释放相关资源。 
            s.close();
            // 关闭Connection对象,释放数据库连接资源。 
            conn.close();
        } catch (SQLException e) {
        }
    }
} 


http://www.kler.cn/a/451311.html

相关文章:

  • (带源码)宠物主题商场系统 计算机项目 P10083
  • 软件测试之全链路压测详解
  • vulnhub靶场-matrix-breakout-2-morpheus攻略(截止至获取shell)
  • 贪心算法(三)
  • 地址踩踏问题
  • linux-19 根文件系统(一)
  • 麒麟系统修改配置镜像源地址并安装openGL
  • WebAssembly与WebGL结合:高性能图形处理
  • Python知识分享第三十五天-Pandas分组聚合
  • Linux 静默安装weblogic及JDK安装
  • chrome主页被被篡改的修复方法
  • 安全见闻(2)
  • 命令手动更新 Navigator
  • C 数组:索引魔杖点化的数据星图阵列
  • Grafana服务监控与日志查询可视化
  • 【C++】B2066救援题目分析和解决讲解
  • 随手记录第十四话 -- 在 Spring Boot 3.2.3 中使用 springdoc-openapi-starter-webmvc-ui
  • 解决Ubuntu下无法装载 Windows D盘的问题
  • 爬虫学习案例8
  • 【开源】一款基于SpringBoot的智慧小区物业管理系统
  • 华为堆叠的多主检测
  • Python数据分析可视化之词云图
  • 架构师应如何考虑重构
  • ArcGIS Maps SDK for JavaScript:根据经纬度定位,并添加定位标记
  • Git开发常用命令总结
  • 关于卡尔曼滤波