MySQL-JDBC

JDBC介绍

JDBC(Java DataBase Connectivity)就是Java数据库连接,说白了就是用Java语言来操作数据库。原来我们操作数据库是在控制台使用SQL语句来操作数据库,JDBC是用Java语言向数据库发送SQL语句。

JDBC库包括通常与数据库使用相关的下面提到的每个任务的API。

  • 连接数据库。
  • 创建SQL或MySQL语句。
  • 在数据库中执行SQL或MySQL查询。
  • 查看和修改生成的记录。

JDBC核心类(接口)介绍

DriverManager类

常用方法

  • getConnection(String url , String user , String password) 指定3个入口参数,依次是连接数据库的URL、用户名、密码,来获取与数据库的连接。
  • setLoginTimeout() 获取驱动程序试图登录到某一数据库时可以等待的最长时间,以秒为单位。
  • println(String message) 将一条消息打印到当前JDBC日志流中。

Connection类

这个类就代表了经过DriverManager的管理驱动类以后返回出来的数据库接口,我们可以调用返回执行类来执行SQL语句。

常用方法

  • close() 立即释放Connection实例占用的数据库和JDBC资源,即关闭数据库连接
  • createStatement() 创建并返回一个Statement实例,通常在执行无参的SQL语句时创建该实例 。
  • prepareStatement() 创建并返回一个PreparedStatement实例,通常在执行包含参数的SQL语句时创建该实例,并对SQL语句进行了预编译处理。

Statement类

主要是来静态语句执行语句。

常用方法

  • executeQuery(String sql) 执行指定的静态SELECT语句,并返回一个永远不能为null的ResultSet实例。
  • executeUpdate(String sql) | 执行指定的静态INSERT、UPDATE或DELETE语句,并返回一个int型数值,为同步更新记录的条数 。
  • close() 立即释放Statement实例占用的数据库和JDBC资源。

ParedStatement类

扩展了Statement类实现了动态实时执行Sql语句,可运行时提供参数。

常用方法

  • executeQuery() 在此 PreparedStatement 对象中执行 SQL 查询,并返回该查询生成的 ResultSet 对象。
  • execute() 在此 PreparedStatement 对象中执行 SQL 语句,该语句必须是一个 SQL 数据操作语言(Data Manipulation Language,DML)语句,比如 INSERT、UPDATE 或 DELETE 语句;或者是无返回内容的 SQL 语句,比如 DDL 语句。 返回值为int类型
  • setString(int parameterIndex, String x) | 将指定参数设置为给定 Java String 值。

ResultSet类

暂时在内存中存放我们从数据库获取来的结果。

常用方法

  • next() 将指针向下移一行
  • getInt() 以int形式获取此ResultSet对象的当前行中指定列值。如果列值为NULL,则返回值是0。
  • getString() 以String形式获取ResultSet对象的当前行的指定列值。如列值是NULL,则返回null。

使用步骤

构建JDBC应用程序涉及以下六个步骤:

  • 导入包:需要包含包含数据库编程所需的JDBC类的包。大多数情况下,使用import java.sql.*就足够
    了。
  • 注册JDBC驱动程序:要求您初始化驱动程序,以便您可以打开与数据库的通信通道。
  • 打开连接:需要使用DriverManager.getConnection()方法创建一个Connection对象,该对象表
    示与数据库的物理连接。
  • 执行查询:需要使用类型为Statement的对象来构建和提交SQL语句到数据库。
  • 从结果集中提取数据:需要使用相应的ResultSet.getXXX()方法从结果集中检索数据。
  • 释放资源:需要明确地关闭所有数据库资源,而不依赖于JVM的垃圾收集。

JDBC连接步骤

  • 建立JDBC连接所涉及的编程相当简单。这是简单的四个步骤
  • 导入JDBC包:将Java语言的import语句添加到Java代码中导入所需的类。
  • 注册JDBC驱动程序:此步骤将使JVM将所需的驱动程序实现加载到内存中,以便它可以满足您的JDBC
    请求。
  • 数据库URL配置:这是为了创建一个格式正确的地址,指向要连接到的数据库。
  • 创建连接对象:最后,调用DriverManager对象的getConnection()方法来建立实际的数据库连
    接。

Class.forName();

注册驱动程序最常见的方法是使用Java的Class.forName()方法,将驱动程序的类文件动态加载到内存
中,并将其自动注册

try {
	Class.forName("com.mysql.cj.jdbc.Driver");
}catch(ClassNotFoundException ex) {
	System.out.println("Error: unable to load driver class!");
	System.exit(1);
}

DriverManager.registerDriver()

第二种方法是使用静态DriverManager.registerDriver()方法。

try {
	Driver myDriver = new com.mysql.cj.jdbc.Driver();
	DriverManager.registerDriver(myDriver);
}catch(ClassNotFoundException ex) {
	System.out.println("Error: unable to load driver class!");
	System.exit(1);
}

数据库URL配置

加载驱动程序后,可以使用DriverManager.getConnection()方法建立连接。为了方便参考,让我
列出三个重载的DriverManager.getConnection()方法 -

  • getConnection(String url)
  • getConnection(String url,Properties prop)
  • getConnection(String url,String user,String password)
RDBMS JDBC驱动程序名称 网址格式
MYSQL8 com.mysql.cj.jdbc.Driver jdbc:mysql://hostname:3306/databaseName?serverTimezone=UTC
MySQL com.mysql.jdbc.Driver jdbc:mysql://hostname:3306/databaseName
ORACLE oracle.jdbc.driver.OracleDriver jdbc:oracle:thin:@hostname:port Number:databaseName
DB2 COM.ibm.db2.jdbc.net.DB2Driver jdbc:db2:hostname:port Number / databaseName
SYBASE com.sybase.jdbc.SybDriver jdbc:sybase:Tds:hostname:port Number / databaseName

创建数据库连接对象

String URL = "jdbc:mysql://localhost:3306/yhp2?serverTimezone=UTC";
String USER = "username";
String PASS = "password"
Connection conn = DriverManager.getConnection(URL, USER, PASS);

使用数据库URL和属性对象

DriverManager.getConnection()方法的第三种形式需要一个数据库URL和一个Properties对象

DriverManager.getConnection(String url, Properties info);
import java.util.*;
String URL = "jdbc:mysql://localhost:3306/yhp2?serverTimezone=UTC";
Properties info = new Properties( );
info.put( "user", "username" );
info.put( "password", "password" );
Connection conn = DriverManager.getConnection(URL, info);

关闭数据库连接

为确保连接关闭,可以在代码中提供一个“finally”块。一个finally块总是执行,不管是否发生异常。
要关闭上面打开的连接,调用close() 方法如下 :

conn.close();
上一篇:PHP的优化建议(仅借鉴)


下一篇:使用DriverManager动态加载JDBC驱动时,报:java.sql.SQLException: No suitable driver found for xxxx 错误