IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> MYSQL-JDBC简介 -> 正文阅读

[大数据]MYSQL-JDBC简介

JDBC


即使用java语言操作关系型数据库的一套API。

本质

  • 官方定义的一套操作所有关系型数据库的规则,即接口;
  • 各个数据库厂商去实现这套接口,提供数据库驱动jar包;
  • 可以使用这套接口(JDBC)去编程,但是真正执行代码的是驱动jar包中的实现类

好处

  • 各数据库厂商使用相同的接口,Java代码不需要针对不同数据库分别开发;
  • 可以随时更换底层数据库,访问数据库的java代码基本不变。

大体步骤

//注册驱动
Class.forName("com.mysql.cj.jdbc.Driver");//由于导入的jar包是8.0之后的版本
//获取连接对象
String url="jdbc:mysql://127.0.0.1:3306/bank_175?useUnicode=true&characterEncoding=UTF-8&userSSL=false&serverTimezone=GMT%2B8";
String username="root";
String password="123456";
Connection conn= DriverManager.getConnection(url,username,password);
//定义sql语句
String sql="update account_175 set balance=500.0 where account_number='A_101' ";
//获取执行sql对象---这里会变更
Statement stmt=conn.createStatement();
//执行sql
int count=stmt.executeUpdate(sql);
//处理结果,cnt=受影响的行数;
System.out.println("受影响的行:"+count);
//释放资源
stmt.close();
conn.close();

JDBC API

DriverManager

驱动管理类的作用:

  • 注册驱动
  • 获取数据库连接

1.注册驱动

//注册驱动
Class.forName("com.mysql.cj.jdbc.Driver");//由于导入的jar包是8.0之后的版本

但是对于MYSQL 5之后的驱动包,可以省略注册驱动的步骤。自动加载jar包中如下的驱动类:

然后你发现和上述代码中的字符串一模一样()

2.获取连接

static Connection | getConnection(String url,String user,String password)

userpassword没啥好说的,即自己数据库用户账密(一般用的都是root)。所以主要就是url

url,我们在计网中学过,它叫统一资源定位符。在这里,url是连接数据库的路径。

  • 语法jdbc:mysql://ip地址(域名):端口号/数据库名称?参数键值对1&参数键值对2...
  • 示例jdbc:mysql://127.0.0.1:3306
  • 细节
    1. jdbc:mysql://表明是JDBCmysql的协议。
    2. 如果连接的是本机的mysql服务器,并且mysql服务器默认端口是3306(或许你自己改了,一般没改就是这个捏),那么可以简写成jdbc:mysql:///数据库名称?参数键值对1&参数键值对2...
    3. 配置useSSL=false参数,禁用安全连接方式,解决警告提示。

Connection

数据库连接对象的作用:

  • 获取执行SQL的对象
  • 管理事务

1.获取执行SQL的对象

//普通执行SQL对象
Statement createStatement()
//预编译SQL的执行对象:防止SQL注入
PreparedStatement prepareStatement(sql)
//执行存储过程的对象
CallableStatement prepareCall(sql)    

2.事务管理

MYSQL的事务管理:

#mysql default下默认自动提交事务
#开启事务
begin;start transaction;
#提交事务
commit;
#回滚事务
rollback;

JDBC的事务管理:

//开启事务--true:自动提交事务;false:手动提交事务,即开启事务
setAutoCommit(boolean autoCommit);
setAutoCommit(false);//开启事务!
//提交事务
commit();
//回滚事务
rollback();

Statement

Statement的作用:执行SQL语句。

1.执行SQL语句

int executeUpdate(sql);//执行DML、DDL语句
//return: 1.DML语句影响行数 2.DDL语句执行后,执行成功【也可能】返回0
ResultSet executeQuery(sql);//执行DQL语句
//return:ResultSet结果集对象

ResultSet

结果集对象的作用:

  • 封装了DQL查询语句的结果

1.封装DQL查询语句的结果

ResultSet stmt.executeQuery(sql);//执行DQL语句,返回ResultSet对象
//【获取查询结果】
boolean next();
//将光标从当前行向前移动一行,判断当前行是否为有效行。
//return:
//	1.true:有效行、当前行有数据
//	2.false:无效行、当前行没有数据

//【获取数据】
xxx getXxx(params);
//xxx:数据类型,eg: int getInt(1),String getString("name")
//params:第几列,可选择int or String来选择
//	int:列的编号,从1开始
//	String:列的名称

//【使用方法】
while(re.next()){
    rs.getXxx();
}

这里可以将每一行的数据载入ArrayList。

通过定义一个类:装载所有的schema捏。

PreparedStatement

PreparedStatement作用:

  • 预编译SQL语句并执行,预防SQL注入问题。

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

//【获取PreparedStatement对象】
//SQL语句中的参数值使用'?'占位符来替代
String sql="select * from user where username = ? and password =?";
//通过Connection对象获取,并传入对应的sql语句
PreparedStatement pstmt=conn.prepareStatement(sql);

//【设置参数值】
//PreparedStatement对象:setXxx(param1,param2):给?赋值
//Xxx:数据类型,eg:setInt(...)
//params:
//	param1:?的位置编号,从1开始
//	param2:?的值

//【执行SQL】
executeUpdate();
executeQuery();

1.预编译SQL

//开启预编译功能--加入url后面
useSeverPrepStmts=true

鹅鹅鹅,下面这个可能不需要捏。

加入MYSQL的日志my.ini(重启完成)

log-out=FILE
general-log=1
general_log_file="D:\mysql.log"
slow-query-log=1
slow-query-log-file="D:\mysql_slow.log"
long_query_time=2

数据库连接池

数据库连接池:是个容器,负责分配、管理数据库连接(Connection)。

  • 它允许应用程序重复使用一个现有的数据库连接,而不是重新建立一个;
  • 释放空间时间超过最大空闲时间的数据库连接来避免因为没有释放数据库而引起的数据库连接遗漏。

好处

  • 资源重用
  • 提升系统响应速度
  • 避免数据库连接遗漏

实现

标准接口:DataSource

//功能:获取连接
Connection getConnection();

常见的数据库连接池:

  • DBCP
  • C3P0
  • Druid(One of Best)

使用步骤

  • 导入jar包 druid-1.1.10.jar
  • 定义配置文件
  • 加载配置文件
  • 获取数据库连接池对象
  • 获取连接

捣鼓半天,成功了。


urce`

//功能:获取连接
Connection getConnection();

常见的数据库连接池:

  • DBCP
  • C3P0
  • Druid(One of Best)

使用步骤

  • 导入jar包 druid-1.1.10.jar
  • 定义配置文件
  • 加载配置文件
  • 获取数据库连接池对象
  • 获取连接

捣鼓半天,成功了。

xyC8MR.png

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-10-22 21:22:23  更:2022-10-22 21:23:42 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年4日历 -2025/4/22 18:00:09-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码