【04】JDBC

本文介绍了JDBC(Java Database Connectivity),它是Java访问数据库的规范,具有执行效率高、跨平台等优点,但连接不同数据库需特定驱动。还详细阐述了JDBC的操作步骤,以及其API中的类和接口,如DriverManager类、Connection接口等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. JDBC

  • JDBC ( Java Database Connectivity ) Java数据库连接;

  • Oracle(Sun)提供的Java访问数据库的规范;

  • 优点:

    • 执行效率高:直接把JDBC调用转换为符合相关数据库系统规范的请求,没有中间转换,效率高。
    • 跨平台:这种类型的驱动完全由JAVA实现,因此实现了平台独立性。
  • 缺点:

    • 连接每一种数据库需要提供针对特定数据库的连接驱动;
      Oracle11g,Oracle10g,Oracle9i,MySQL5.5,MySQL5.7,……
      在这里插入图片描述

2. JDBC操作步骤

2.1 注册驱动

2.2 根据驱动创建连接

  • Oracle

     Class.forName("oracle.jdbc.driver.OracleDriver");//oracle数据库驱动类的完全限定类名
     String url = "jdbc:oracle:thin:@localhost:1521:orcl";//orcl为数据库实例名
     Connection conn = DriverManager.getConnection(url, "test ", " test123456 ");//url,数据库用户名及密码
    
  • MySQL

     Class.forName("com.mysql.jdbc.Driver");//MySQL数据库驱动类的完全限定类名
     String url = "jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf-8";//test为数据库名
     Connection conn = DriverManager.getConnection(url, "test ", " test123456 ");//url,数据库用户名及密码
    

2.3 根据连接创建语句的执行者

2.4 语句的执行者发送sql语句

2.5 处理结果集

2.6 释放资源

3. JDBC API中的类和接口

  • Driver接口:数据库驱动接口。
  • DriverManager类:管理各种驱动的类。
  • Connection接口:对连接进行管理。
  • Statement接口:对数据库进行操作。
  • PreparedStatement接口:对预编译的SQL语句进行处理。
  • CallableStatement接口:执行数据库存储过程。
  • ResultSet接口:数据库结果集。
  • DatabaseMetadata接口:数据库的整体综合信息,由驱动程序供应商实现。
  • ResultSetMetadata接口:用于获取关于 ResultSet 对象中列的类型和属性信息。
  • Types类:用于标识SQL 中数据的类型。

4. DriverManager类

  • 驱动管理类

  • java.sql包

  • 常用方法 – getConnection()

     public static Connection getConnection(String url,
              String user,
              String password)
              throws SQLException
     试图建立到给定数据库 URL 的连接。DriverManager 试图从已注册的 JDBC 驱动程序集中选择一个适当的驱动程序。 
     参数:
     	url - jdbc:subprotocol:subname 形式的数据库 url
     	user - 数据库用户,连接是为该用户建立的
     	password - 用户的密码 
     返回:
     	到 URL 的连接 
     抛出: 
     	SQLException - 如果发生数据库访问错误
    

5. Connection接口

  • 数据库连接对象

  • java.sql包

  • 常用方法 – createStatement()

     Statement createStatement() throws SQLException
     创建一个 Statement 对象来将 SQL 语句发送到数据库。
    
  • 常用方法 – prepareStatement()

     PreparedStatement prepareStatement(String sql)throws SQLException
     创建一个 PreparedStatement 对象来将参数化的 SQL 语句发送到数据库。
    
  • 常用方法 – close()

     void close() throws SQLException
     立即释放此 Connection对象的数据库和 JDBC 资源,而不是等待该对象自动关闭时发生此操作。
    

6. Statement接口

  • java.sql包

  • 对数据库进行操作CURD。【创建(Create)、更新(Update)、读取(Retrieve)和删除(Delete)操作】

  • 操作方向

      【请求】SQL语句和请求参数由客户端提交到服务器上;
      【响应】执行结果由服务器返回到客户端;
    
  • 常用方法 – execute(String sql)

     boolean execute(String sql) throws SQLException
     执行给定的 SQL 语句,该语句可能返回多个结果。执行所有的SQL语句,返回值是boolean类型,表示执行的SQL是否有结果。
    
  • 常用方法 – executeUpdate(String sql)

     int executeUpdate(String sql) throws SQLException
     执行给定 SQL 语句,该语句可能为 INSERT、UPDATE 或 DELETE 语句,或者不返回任何内容的 SQL 语句(如 SQL DDL 语句)。
     返回的是影响行数,是一个整数。
    
  • 常用方法 – executeQuery(String sql)

     ResultSet executeQuery(String sql) throws SQLException
     执行给定的 SQL 语句,该语句返回单个 ResultSet 对象。SELECT操作。
    
  • 常用方法 – close()

     void close() throws SQLException
     立即释放此 Statement对象的数据库和 JDBC 资源,而不是等待该对象自动关闭时发生此操作。
    

7. ResultSet接口

  • java.sql包

  • 结果集
    表示数据库结果集的数据表,通常通过执行查询数据库的语句生成。 是一张二维表格(行、列)。

  • 游标
    ResultSet 对象具有指向其当前数据行的光标(游标)。光标位置从1开始,可以移动光标位置。

    • 移动的方法(了解)

       void beforeFirst():把光标放到第一行的前面,这也是光标默认的位置;
       void afterLast():把光标放到最后一行的后面;
       boolean first():把光标放到第一行的位置上,返回值表示调控光标是否成功;
       boolean last():把光标放到最后一行的位置上;
       boolean previous():把光标向上挪一行;
       boolean next():把光标向下挪一行;
       boolean relative(int row):相对位移,当row为正数时,表示向下移动row行,为负数时表示向上移动row行;
       boolean absolute(int row):绝对位移,把光标移动到指定的行上;

    • 判断游标位置的方法(了解)

       boolean isBeforeFirst():当前光标位置是否在第一行前面;
       boolean isAfterLast():当前光标位置是否在最后一行的后面;
       boolean isFirst():当前光标位置是否在第一行上;
       boolean isLast():当前光标位置是否在最后一行上;
       int getRow():返回当前光标所在位置;

    • 获取当前结果集的总行数(了解)
       先执行rs.last();把光标移动到最后一行,在执行rs.getRow();获得当前光标所在行,可以得到结果集一共有多少行。

    • 获取结果集的总列数(了解)
       先获取结果集的元数据 ResultSetMetaData rsmd = rs.getMetaData();
       获取结果集列数:int len = rsmd.getColumnCount();
       获取指定列的列名:String name = rsmd.getColumnName(int colIndex);

            /**
            * 动态获取结果
            */
            rs = stmt.executeQuery(sql);
            //获得列数
            int len = rs.getMetaData().getColumnCount();
            while(rs.next()){//遍历行
            //遍历列
            for (int i = 0; i < len; i++) {
            	System.out.print(rs.getString(i));
            	if(i<len){
            	    	System.out.print(",");
            	}
            }
            System.out.println("");//换行
            }
      
  • 常用方法 – next()

     boolean next() throws SQLException
     将光标从当前位置向前移一行(前进)。
    
  • 常用获得ResultSet中列的值的方法 – getXXX()

     String getString(int columnIndex)  throws  SQLException
     String getString(String columnName)  throws  SQLException
     String getInt(int columnIndex)  throws  SQLException
     String getInt(String columnName)  throws  SQLException
     String getBoolean(int columnIndex)  throws  SQLException
     String getBoolean(String columnName)  throws  SQLException
     String getDate(int columnIndex)  throws  SQLException
     String getDate(String columnName)  throws  SQLException
     String getDouble(int columnIndex)  throws  SQLException
     String getDouble (String columnName)  throws  SQLException
     。。。。。。
     参数可以写列名、列的别名、列的编号(编号从1开始)
    
  • 常用方法 – close()

     void close() throws SQLException
     立即释放此 ResultSet 对象的数据库和 JDBC 资源,而不是等待该对象自动关闭时发生此操作。
    
### 如何在 Ubuntu 22.04 上安装 MySQL JDBC 驱动 要在 Ubuntu 22.04 上安装 MySQL JDBC 驱动程序,可以按照以下方法操作: #### 方法一:通过 Maven 或 Gradle 自动管理依赖项 如果正在使用构建工具(如 Maven 或 Gradle),可以通过其配置文件自动引入 MySQL JDBC 驱动。 对于 **Maven**,可以在 `pom.xml` 文件中添加如下依赖项: ```xml <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.32</version> <!-- 版本号可以根据需求调整 --> </dependency> ``` 对于 **Gradle**,可以在 `build.gradle` 中添加以下内容: ```gradle implementation 'mysql:mysql-connector-java:8.0.32' // 版本号可按需更改 ``` 运行相应的构建命令即可完成驱动的下载和集成[^1]。 --- #### 方法二:手动下载并安装 MySQL JDBC 驱动 如果没有使用构建工具,则可以选择手动方式获取和部署驱动。 ##### 步骤说明 1. 访问官方 MySQL 下载页面,找到适用于 Java 的连接器版本。通常可以从以下链接访问最新版的 MySQL Connector/J: - 官方地址:https://dev.mysql.com/downloads/connector/j/ 2. 下载 `.tar.gz` 压缩包形式的驱动程序,并将其解压到本地目录。例如: ```bash wget https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-j-8.0.32.tar.gz tar -xzvf mysql-connector-j-8.0.32.tar.gz -C /usr/local/lib/ ``` 3. 将解压后的 JAR 文件路径加入项目的类路径(Classpath)。如果是独立应用,可以直接复制该 JAR 到项目资源目录下;或者设置环境变量以全局加载此库: ```bash export CLASSPATH=$CLASSPATH:/usr/local/lib/mysql-connector-j-8.0.32/mysql-connector-j-8.0.32.jar ``` 4. 如果是在 Tomcat 等容器环境中运行的应用,应将 JAR 放置于 `$TOMCAT_HOME/lib` 路径下以便被服务器识别[^2]。 --- #### 方法三:利用 APT 包管理器快速安装 某些情况下也可以借助 Linux 的软件源来简化安装过程。执行以下命令即可完成 MySQL JDBC 驱动的安装: ```bash sudo apt-get update && sudo apt-get install libmysql-java ``` 这会将驱动放置在 `/usr/share/java/mysql-connector-java.jar` 目录下。随后同样需要确保应用程序能够正确引用上述位置中的 JAR 文件[^3]。 --- ### 注意事项 无论采用哪种方式进行安装,在开发阶段都需要确认所使用的数据库版本与 JDBC 驱动兼容性良好。此外还需测试基本功能是否正常运作,比如尝试建立简单的数据查询逻辑验证连通状态。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值