JDBC

JDBC( Java Database Connectivity)是一种用于执行SQL语句的Java API,能够为多种关系型数据库提供访问接口。

JDBC库通常包括与数据库相关的以下几个功能:

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

1.JDBC的体系结构

通常JDBC体系结构由两层组成。

  • JDBC API:提供Java应用程序到JDBC管理器的连接
  • JDBC驱动程序 API:支持JDBC管理器到驱动程序的连接

JDBC管理器使用相应数据库的驱动程序来实现与数据库的连接。

2.JDBC核心组件

  • DriverManager此类管理数据库驱动程序列表。使用通信子协议将来自java应用程序的连接请求与适当的数据库驱动程序匹配。

  • Driver:此接口处理与数据库服务器的通信,我们很少会直接与Driver对象进行交互。而是使用DriverManager对象来管理这种类型的对象。

  • Connection该界面具有用于联系数据库的所有方法。连接对象表示通信上下文,即,与数据库的所有通信仅通过连接对象。

  • Statement:使用从此接口创建的对象将SQL语句提交到数据库。除了执行存储过程之外,一些派生接口还接受参数。

  • ResultSet在使用Statement对象执行SQL查询后,这些对象保存从数据库检索的数据。它作为一个迭代器,允许我们移动其数据。

  • SQLException此类处理数据库应用程序中发生的任何错误

3.使用步骤

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

4.JDBC连接步骤

JDBC连接对应上文使用步骤中前三步。

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

4.1 注册JDBC驱动程序

不同数据库应的数据库驱动程序名称见下表。

注册驱动程序常用的方法是使用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()方法。

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);
}
RDBMS
JDBC 驱动程序名称
网址格式
MySQL
com.mysql.cj.jdbc.Driver
jdbc:mysql://hostname:3306/databaseName
MYSQL8
com.mysql.jdbc.Driver
jdbc:mysql://hostname:3306/databaseName?serverTimezone=UTC
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

4.2 数据库URL配置及创建连接对象

加载驱动程序后,可以使用 DriverManager.getConnection () 方法建立连接。
//getConnection的三种重载方法
getConnection(String url)
getConnection(String url,Properties prop)
getConnection(String url,String user,String password)
创建数据库连接对象
String URL = "jdbc:mysql://localhost:3306/student?serverTimezone=UTC"; 
String USER = "username"; 
String PASS = "password"; 
Connection conn = DriverManager.getConnection(URL, USER, PASS);
DriverManager.getConnection() 方法的第二种形式需要一个数据库 URL 和一个 Properties 对象  
String URL = "jdbc:mysql://localhost:3306/student?serverTimezone=UTC";
Properties info = new Properties();
info.put("user", "username");
info.put("password", "password");
Connection conn = DriverManager.getConnection(URL, info);

4.3 JDBC执行SQL语句

一旦获得了连接,我们可以与数据库进行交互。 JDBC Statement PreparedStatement接口定义了使您能够发送 SQL 命令并从数据库接收数据的方法和属性。
在使用 Statement 对象执行 SQL 语句之前,需要使用 Connection 对象的 createStatement() 方法创建。
Statement statement = null;
statement = connection.createStatement();
创建 Statement 对象后,您可以使用它来执行一个 SQL 语句,其中有三个执行方法。
 
ResultSet executeQuery String SQL :返回一个 ResultSet 对象。SQL语句进行select查询时使用此方法。
int executeUpdate String SQL :返回受 SQL 语句执行影响的行数。使用此方法执行预期会影响多个行的SQL 语句,例如 INSERT UPDATE DELETE 语句。
boolean execute String SQL :如果可以检索到 ResultSet 对象,则返回一个布尔值 true; 否则返回false 。使用此方法执行 SQL DDL 语句或需要使用真正的动态 SQL 时。
statement = connection.createStatement();
int result = statement.executeUpdate("insert into grade values(5,'第五阶段')");//执行增删改操作时使用executeUpdate
ResultSet resultSet = statement.executeQuery("select * from grade");//执行查询语句时使用executeQuery

利用Statement的executeQuery方法得到一个ResultSet对象后,就可以对该对象进行内容查询。

//4.取出结果集信息
System.out.println(result);
while(resultSet.next()){                                  
    System.out.println("id:"+resultSet.getInt("gradeid")+",name="+resultSet.getString("gname"));
}

5.释放资源

resultSet.close();
statement.close();
connection.close();

全部代码示例:

import java.sql.*;

public class demo1 {
    public static void main(String[] args) {
        Connection connection = null;
        Statement statement = null;
        ResultSet resultSet = null;
        //1.加载驱动程序
        try {
            Class.forName("com.mysql.cj.jdbc.Driver");
            //2.创建数据库连接
            String username = "root";
            String password = "123456";
            String url = "jdbc:mysql://localhost:3306/student?serverTimezone=UTC";
            connection = DriverManager.getConnection(url,username,password);

            //3.定义sql,创建状态通道(sql语句的发送)
            statement = connection.createStatement();
            int result = statement.executeUpdate("insert into grade values(5,'第五阶段')");//执行增删改操作时使用executeUpdate
            resultSet = statement.executeQuery("select * from grade");//执行查询语句时使用executeQuery


            //4.取出结果集信息
            System.out.println(result);
            while(resultSet.next()){
                System.out.println("id:"+resultSet.getInt("gradeid")+",name="+resultSet.getString("gname"));
            }
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        } finally {
            try {
                if (resultSet != null) {
                    resultSet.close();
                }
                if (statement != null) {
                    statement.close();
                }
                if (connection != null) {
                    connection.close();
                }
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
        }

    }
}

 

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值