MySQL实现JDBC-基础步骤
目录
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