MySQL实现JDBC-基础步骤
目录
JDBC基础入门
概念
本质
JDBC的7个步骤
(1)导入jar包
(2)注册驱动
(3)获取连接
(4)获取执行者对象
(5)执行sql语句,并接收返回结果
(6)处理结果
(7)释放资源
JDBC入门示例代码
JDBC各个功能类详解
DriverManager
(1)注册驱动(告诉程序该使用哪一个数据库驱动)
(2)获取数据库连接
Connection
(1)获取执行者对象
(2)管理事务
(3)释放资源
Statement
(1)执行DML语句
(2)执行DQL语句:
(3)释放资源
ResultSet
(1)判断结果集中是否还有数据
(2)获取结果集中的数据
(3)释放资源
下一节:案例实现
JDBC基础入门
概念
JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系型数据库提供统一访问,它是由一组用Java语言编写的类和接口组成的。
本质
其实就是java官方提供的一套规范(接口)。用于帮助开发人员快速实现不同关系型数据库的连接!
JDBC的7个步骤
(1)导入jar包
(2)注册驱动
Class.forName("com.mysql.cj.jdbc.Driver");
注意:如果使用较高版本的MySQL,必须使用 com.mysql.cj.jdbc.Driver 的方式,否则会报错!
Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary.
如果是低版本的可以使用 com.mysql.jdbc.Driver
如果还是报错,可以使用在url上面加入时区!
url=jdbc:mysql://localhost:3306/数据库名?serverTimezone=UTC
(3)获取连接
String url = "jdbc:mysql://localhost:3306/db1";
Connection con = DriverManager.getConnection(url,"root","888888");
(4)获取执行者对象
Statement stat = con.createStatement();
(5)执行sql语句,并接收返回结果
String sql = "SELECT * FROM user";
ResultSet rs = stat.executeQuery(sql);
(6)处理结果
while(rs.next()) {System.out.println( rs.getInt("id")+ "\t" + rs.getString("name"));
}
(7)释放资源
con.close();
stat.close();
rs.close();
JDBC入门示例代码
Connection对象中的用户名,数据库名,密码改成你自己的哦!
public class jdbc_demo01 {public static void main(String[] args) throws ClassNotFoundException, SQLException {// 1.导入jar包// 2.注册驱动Class.forName("com.mysql.cj.jdbc.Driver");// 3.获取连接String url = "jdbc:mysql://localhost:3306/db1";Connection con = DriverManager.getConnection(url,"root","888888");// 4.获取执行者对象Statement stat = con.createStatement();// 5.执行sql语句,并且接收结果String sql = "SELECT * FROM product";ResultSet rs = stat.executeQuery(sql);// 6.处理结果while(rs.next()) {System.out.println( rs.getInt("id") + "\t"+ rs.getString("name") + "\t"+ rs.getInt("price") + "\t"+ rs.getString("brand") + "\t"+ rs.getInt("stock"));}// 7。释放资源con.close();stat.close();rs.close();}
}
结果如下:
JDBC各个功能类详解
DriverManager
驱动管理对象,它有2个作用——注册驱动、获取数据库连接
(1)注册驱动(告诉程序该使用哪一个数据库驱动)
static void registerDriver(Driver driver):注册与给定的驱动程序 DriverManager
写代码使用:Class.forName("com.mysql.jdbc.Driver");
通过查看源码发现:在com.mysql.cj.jdbc.Driver类中存在静态代码块
注:在com.mysql.jdbc.Driver类中的Driver继承了com.mysql.cj.jdbc.Driver类中的方法
package com.mysql.jdbc;import java.sql.SQLException;public class Driver extends com.mysql.cj.jdbc.Driver {public Driver() throws SQLException {}static {System.err.println("Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary.");}
}
com.mysql.cj.jdbc.Driver类如下:
static {try {java.sql.DriverManager.registerDriver(new Driver());} catch (SQLException E) {throw new RuntimeException("Can't register driver!");}
}
在类一旦被使用,静态代码块就会被执行!所以 registerDriver方法一定会被调用。
注意:
mysql5之后的驱动jar包可以省略注册驱动的步骤。在jar包中,存在一个java.sql.Driver配置文件,文件中指定了com.mysql.cj.jdbc.Driver
(2)获取数据库连接
获取数据库连接对象:
static Connection getConnection(String url, String user, String password);
返回值:
Connection-数据库连接对象,如果连接成功,就会返回一个Connection。
参数:
url:指定连接的路径。语法:jdbc:mysql://ip地址(域名):端口号/数据库名称
例如:jdbc:mysql://localhost:3306/db1
user:用户名
password:密码
Connection
上面讲过,就是数据库连接对象。它有3个作用
(1)获取执行者对象
获取普通执行者对象:Statement createStatement();
获取预编译执行者对象:PreparedStatement prepareStatement(String sql);
(2)管理事务
开启事务:setAutoCommit(boolean autoCommit); 参数为false,则开启事务。
提交事务:commit();
回滚事务:rollback();
(3)释放资源
- 立即将数据库连接对象释放:void close();
Statement
执行sql语句的对象
(1)执行DML语句
执行DML语句:int executeUpdate(String sql);
返回值int:返回影响的行数。
参数sql:可以执行insert、update、delete语句。
(2)执行DQL语句:
执行DQL语句:ResultSet executeQuery(String sql);
返回值ResultSet:封装查询的结果。
参数sql:可以执行select语句。
(3)释放资源
立即将执行者对象释放:void close();
ResultSet
ResultSet是结果集对象,有3个作用
(1)判断结果集中是否还有数据
boolean next();
有数据返回true,并将索引向下移动一行
没有数据返回false
(2)获取结果集中的数据
XXX getXxx("列名");
XXX代表数据类型(要获取某列数据,这一列的数据类型)
例如:String getString("name"); int getInt("age");
例如:
ResultSet rs = stat.executeQuery(sql);while(rs.next()) {System.out.println( rs.getInt("id") + "\t"+ rs.getString("name") + "\t"+ rs.getInt("price") + "\t"+ rs.getString("brand") + "\t"+ rs.getInt("stock"));}
(3)释放资源
立即将结果集对象释放:void close();
下一节:案例实现
MySQL实现JDBC-简单案例演示_Tensorflow-CSDN博客https://blog.csdn.net/weixin_43715214/article/details/123075053
MySQL实现JDBC-基础步骤相关推荐
- MySQL与JDBC基础
©Copyright 思思不羡仙 Date:2021-04 1. MySQL环境 1.1 安装卸载 使用 cd 命令至zip解压文件夹目录(不能有中文) 安装MySQL mysqld --instal ...
- 数据库MySQL基础---JDBC开发步骤--JDBC封装工具类--PreparedStatement实现CRUD操作
JDBC简介 1.JDBC定义Java数据库连接(Java Database Connectivity,简称JDBC):是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询 ...
- pom 导入mysql连接,maven项目中的jdbc连接步骤
在maven项目pom.xml中到入驱动包(以下是驱动包代码) mysql mysql-connector-java 8.0.15 导入成功会看到Maven Dependencies下有个mysql- ...
- (Java/JDBC)对MySQL数据库实现基础的增删改查操作(含源码)
文章目录 前言 注(常用PreparedStatement方法) 源码展示 前言 实现数据库连接 → Java连接MySQL数据库(含源码) (实现简单的增删查改更改正确的SQL语句即可) 增:ins ...
- 下载MySQL的JDBC驱动jar包详细步骤
前言必读 读者手册(必读)_云边的快乐猫的博客-CSDN博客 1.浏览器搜索MySQL,进入官网 2.选择DOWNLOADS 3.选择这个 4.选择Connector/J 5.选择想要的版本,在第二 ...
- mysql和JDBC学习
1. MySQL 数据库 第一节 数据库简介 1.1 简介 数据库(DataBase,DB):指长期保存在计算机的存储设备(硬盘)上,按照一定规则组织起来,可以被各种用户或应用共享的数据集合.简单 ...
- MySQL数据库+jdbc -- 笔记
MySQL数据库 @Draven Mysql 1.连接数据库 1.1.下载可视化软件 1.2.连接数据库 1.3.连接命令 1.4.基本语法操作 2.操作数据库 2.1.操作数据库(了解) 2.2.数 ...
- 3.JDBC基础代码书写
JDBC基础代码书写 (仅个人学习笔记) 基础知识补充 一.代码书写顺序 加载驱动 连接数据库 创建用于执行SQL语句的对象 书写SQL语句 执行SQL语句 对执行后的结果进行操作(具体看需求是否需要 ...
- JDBC 基础、CRUD、分页 第一节
JDBC基础知识 JDBC 简介 1.持久化 把数据保存到可掉电式存储设备中以供之后使用.大多数情况下,特别是企业级应用,数据持久化意味着将内存中的数据保存到硬盘上加以"固化",而 ...
- 【MySQL】JDBC编程
目录 1.什么是JDBC? 2.导入 jar 包 3.JDBC 的使用 4.总结 1.什么是JDBC? 实际开发中,SQL 是很少手动输入的,绝大多数的 SQL 都是通过代码,自动执行的,这个时候就需 ...
最新文章
- Docker 从入门到精通(建议收藏的教程)
- JAVA_OA(十四)番外:JAVAWEB防止表单重复提交的方法整合(包括集群部署)
- SharePoint 2013技巧分享系列 - 同步Exchange显示高清用户照片
- [蓝桥杯][算法提高VIP]Sharing Chocolate(状压dp记忆化搜索)
- Mac本如何卸载MySQL
- 高可用MySQL MHA介绍
- IDEA 2019.3新建项目找不到Maven的解决方法
- css如何设置固定位置,用css固定位置的方法
- MySQL SQL error: #1271 - Illegal mix of collations for operation 'UNION'
- jQuery实现高亮显示网页关键词的方法
- 50年过去了,嫦娥五号探月依然不能直播,告诉你三个可能
- 三维空间中向量的旋转
- Adaptive让 Spark SQL 更高效更智能
- NVIDIA视频编码器 ffmpeg -h encoder=h264_nvenc
- ubuntu将cuda卸载干净
- mysql 过滤纯数字_mysql中怎么样过滤字符串中的数字
- 报Python培训班多少钱?报个班值得吗?
- Grain: Improving Data Efficiency of Graph Neural Networks via Diversified Influence Maximization分析
- SpringBoot项目中遇到的订单支付超时未支付关闭订单的解决方案
- Java电商系统秒杀怎么做?
热门文章
- 4分钟告诉你python是什么_Python调试方法有哪些,3分钟告诉你Python调试命令怎么用...
- cocos creator2.2.1益智小游戏源码《环与环》源码H5+安卓+IOS三端源码
- 根据学员英文名找到学员对象
- 【mysql】当前日期减一天 字段年月日-1天
- 配置nginx网页缓存时间
- dyld: Library not loaded: /usr/local/opt/openssl/lib/libssl.1.0.0.dylib解决办法
- 小孩子语录——庆祝六一儿童节
- LightDB中的存储过程(七)—— 子程序
- Windows文件名长度限制
- 七年阿里老人谈新人成长