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、定义SQLString sql="update account set money=2000 where id=1";//4、获取执行sql的对象StatementStatement stmt=conn.createStatement();//5、执行sqlint 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.mzph.cn/diannao/65100.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Require:离线部署 Sourcegraph

Sourcegraph 使读取、编写和修复代码变得容易——即使在庞大而复杂的代码库中。 代码搜索:搜索所有分支和所有代码主机的所有存储库。代码智能:导航代码、查找引用、查看代码所有者、跟踪历史记录等。修复和重构:一次对许多存储库进行大规模更…

element ui--下拉根据拼音首字母过滤

很多场景下我们的下拉不仅仅要根据选项中的字过滤,还要根据拼音首字母过滤,现在我们来实现下。 要获取汉字拼音,可以用pinyin-pro库来实现 1.导入拼音库 npm install pinyin-pro 下面的代码可以获取companyName的拼音,返回的是…

Vue3 中使用axios

1.安装axios、js-cookie、pinia axios命令行: npm install axios js-cookie命令行: npm install js-cookie store命令行: npm install pinia 2.配置文件 (1)缓存文件配置 src/plugins/auth.js const sessionCache {set (key, valu…

从AI换脸到篡改图像,合合信息如何提升视觉内容安全?

本文目录 引言一、AI“真假之战”下的发展现状与考验挑战1.1 视觉内容安全现状与技术分类1.2视觉内容安全企业1.3视觉内容安全领域挑战 二、开山之石:引领视觉内容安全的创新之路2.1合合内容安全系统2.2发起编制相关技术规范2.3参与篡改检测挑战赛 三、视觉内容安全…

解决Ubuntu下无法装载 Windows D盘的问题

电脑安装了 Windows 和 Ubuntu 24.04 后,在Ubuntu系统上装载 D盘,发现无法装载错误如下: Error mounting /dev/nvme0n1p4 at /media/jackeysong/Data: wrong fs type, bad option, bad superblock on /dev/nvme0n1p4, missing codepage or h…

STM32-笔记10-手写延时函数(SysTick)

1、什么是SysTick Systick,即滴答定时器,是内核中的一个特殊定时器,用于提供系统级的定时服务。该定时器是一个24位的倒计数定时器‌。它从设定的初值(即重载值)开始计数,每经过一个系统时钟周期&#xff0…

“AI+Security”系列第4期(一)之“洞” 见未来:AI 驱动的漏洞挖掘新范式

在数字化浪潮下,安全漏洞问题日益严峻,成为各行业发展的重大挑战。近日,“AISecurity” 系列第 4 期线下活动于北京成功举办,聚焦 “洞” 见未来:AI 驱动的漏洞挖掘新范式,汇聚了安全领域的众多专家。 本次…

攻防世界 PHP2

开启场景 访问 /index.php,页面无变化 访问 /index.phps index.php 和 index.phps 文件之间的主要区别在于它们的文件扩展名。 index.php:这是一个标准的 PHP 文件,通常用于编写 PHP 代码。当用户访问 index.php 文件时,Web 服务器…

AI应用-本地模型实现AI生成PPT(简易版)

文章目录 前言技术栈效果展示 一、实现思路二、实现步骤1.本地安装marp-cli2.后端实现3.前端实现 三、代码地址及说明 前言 在许多项目中,生成 PPT 是常见的需求,尤其在教育和报告展示中。传统的生成 PPT 的方法需要手动创建,而使用生成模型…

项目2路由交换

背景 某学校为满足日常教学生活需求,推动数字校园的建设,学校有办公楼和学生宿舍楼和服务器集群三块区域,请合理规划IP地址和VLAN,实现企业内部能够互联互通现要求外网能通过公网地址访问服务器集群,学生和老师能正常…

快速掌握Haproxy原理架构

文章目录 一、原理架构二、无负载均衡三、四层负载均衡的工作流程四、七层负载均衡工作流程五、基础属性mode 属性retries 属性maxconn 属性clitimeout 属性servtimeout 属性states uri 属性 一、原理架构 四层tcp代理:Haproxy仅在客户端和服务器之间双向转发流量&…

02、并发编程的三大特性

并发编程有三大特性分别是,原子性,可见性,有序性。会产生这些特性的根本原因是现在的服务器都是多CPU多核心数的,每个CPU都有自己单独的一套缓存和pc系统,而且程序在运行时按照JMM的规范,它们是需要先把数据…

【项目构建】Gradle入门

本文适用: 不知道什么是项目构建,可以了解下Ant,Maven,Gradle的区别。知道什么是项目构建,了解Ant,Maven,可以看到Gradle是怎么做的。知道什么是项目构建,了解Ant,Maven&…

java栈--数据结构

前言 java实现数据结构栈:用顺序表存储的栈和数组存储的栈。 本文源代码网址:https://gitee.com/zfranklin/java/tree/master/dataStructure/src/com/njupt/stack https://gitee.com/zfranklin/java/tree/master/dataStructure/src/com/njupt/stack 栈…

2.5.2 文件结构、目录及存取

文章目录 文件结构文件目录存取 文件结构 文件结构是文件的组织形式。从用户角度观察到的结构是逻辑结构,从机器实现存储的角度观察,看到的是物理结构。 逻辑结构 有结构的记录式文件:文件中记录的长度都相同,称为定长记录。文件…

关于科研中使用linux服务器的集锦

文章目录 常用的linux命令下载COCO2017数据集 常用的linux命令 一个文件移动到另一个目录下的命令是:mv -v ./old_name ./new_name 如果目标文件夹中已经有同名文件或文件夹,mv 会覆盖它们(除非使用了 -i 选项来提示确认)。 使用…

<项目代码>YOLO Visdrone航拍目标识别<目标检测>

项目代码下载链接 <项目代码>YOLO Visdrone航拍目标识别<目标检测>https://download.csdn.net/download/qq_53332949/90163918YOLOv8是一种单阶段(one-stage)检测算法,它将目标检测问题转化为一…

java内存马

java内存马 idea 2024.1.2专业版 jdk1.8.0_181 tomcat 8.5.82 默认有java基础,Javassist,Jsp,JavaEE都会一点 更新ing 文章目录 java内存马0. 一些基础1. filter型内存马2. Servlet型内存马3. listener型内存马4. Tomcat特有的Valve内存马…

【ORB-SLAM3:相机针孔模型和相机K8模型】

在ORB-SLAM3中,相机的建模是 SLAM 系统的核心之一,因为它直接影响到如何处理和利用图像数据进行定位和地图构建。ORB-SLAM3 支持不同的相机模型,其中包括针孔模型和鱼眼模型(K8 模型)。下面分别介绍这两种模型。 相机…

[手机Linux] 七,NextCloud优化设置

安装完成后在个人设置里发现很多警告,一一消除。 只能一条一条解决了。 关于您的设置有一些错误。 1,PHP 内存限制低于建议值 512 MB。 设置php配置文件: /usr/local/php/etc/php.ini 把里面的: memory_limit 128M 根据你自…