JDBC

本文详细介绍了Java数据库连接(JDBC)的基本概念与使用方法,包括加载驱动、建立连接、发送SQL语句、处理结果集及资源释放等核心步骤。同时探讨了DriverManager与Class.forName的不同之处,以及如何有效管理数据库连接。

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

一、JDBC 简介

      SUN 公司为了简化、统一数据库的操作,定义了一套 Java 操作数据库的规范,称之为 JDBC。JDBC 是一套接口,并不能真正操作数据库,而各个数据库的驱动是 JDBC 的实现,用来对数据库的操作。

 

 

         JDBC 全称:Java Data Base Connectivity(Java 数据库连接),组成 JDBC 的两个包 java.sql、javax.sql。开发 JDBC 应用需要以上两个包的支持外,还需要导入相应的JDBC 的数据库实现(数据库驱动)。

 

二、使用 JDBC

       1、加载驱动

                 DriverManager.registerDriver(new com.MySQL.jdbc.Driver());

 

        2、获取连接

                 String url = "jdbc:mysql://localhost:3306/mydb";

              String user = "root";

              String password = "root";

              Connection con = DriverManager.getConnection(url, user, password);

 

         3、获取向数据库发送 sql 语句的Statement 对象

                  Statement st = con.createStatement();

 

         4、向数据库发送 sql 语句

               String sql = "select * from account";

               ResultSet rs = st.executeQuery(sql);

 

         5、处理结果

                  while(rs.next()){

                     rs.getObject("name");

                     .......

               }

 

          6、释放资源

               rs.close();

               st.close();

               con.close();

 

三、DriverManager

      1、在实际开发中,我们不会使用通常不会使用上面的方法来注册驱动,原因有两个。第一,如果我们使用DriverManager.registerDriver 会导致在 DriverManager 中注册了两个 Driver 对象。查看 mysql 源码发现,当我们使用 new com.mysql.jdbc.Driver() 的时候,在 Driver 类中有一个静态代码块,在静态代码块中执行了将自己注册到 DriverManager 中的操作,之后我们在使用DriverManager.registerDriver 时,等于在内存中加载了两个 Driver。第二,我们在加载驱动的时候,已经将 mysql 的驱动写死在了程序中,导致我们这个程序在开发完以后不能更改数据库,只能使用 mysql。基于这两个原因,我们一般不会使用 DriverMagnaer.register 来注册驱动。

       2、使用 Class.forName(driver) 来加载驱动,如果使用这种方式,那么在内存中只有一份驱动的字节码文件,并且要加载的驱动名 driver 我们可以写在配置文件中,更改配置文件我们就可以更改数据库。

       3、数据库 URL

            jdbc:mysql://localhost:3306/account?参数名:参数值(可以跟用户名、密码、字符编码。。)

               |           |           |          |          |

            协议    子协议     主机      端口     数据库

               jdbc:mysql///account(简写,默认连接本机3306)

            Oralce:jdbc:oralce:this:@localhost:1521:account

 

四、Connection

      它用于代表数据库的连接,Connection 是数据库编程中最重要的一个对象,客户端与数据库所有交互都是通过 Connection 对象完成的。

        createStatement()  创建数据库发送 sql 的 statement 对象

        preparedStatement(sql) 创建向数据库发送预编译 sql 的 preparedStatement 对象

        prpareCall(sql)  创建执行存储过程的 callableStatement 对象

        setAutoCommit(boolean autoCommit) 设置事务是否自动提交

        commit() 在连接上提交事务

        rollback() 在连接上回滚事务

 

五、Statement

        用于向数据库发送 sql 语句

        executeQuery(String sql)  用于向数据库发送查询语句

        executeUpdate(String sql)  用于向数据库发送更新语句 insert、update、delete

        execute(String sql)  用于向数据库发送任意 sql 语句(在未知将要进行什么操作时使用)

        addBatch(String sql)  把多条 sql 语句放到一个批处理中

        executeBatch()  向数据库发送一批 sql 语句执行。

 

六、ResultSet

        用于代表 sql 语句的执行结果。ResultSet 封装执行结果时,采用的是类似于表格的方式,ResultSet 对象中维护了一个指向表格数据行的游标,初始的时候游标位于结果集的第一行之前,调用 next() 方法可以使游标指向具体的数据行,进而调用方法获取该行的数据。在 RestultSet 获取数据的时候应该对应数据类型来获取,这样方便对 Bean 的封装。

          next()  移动到下一行

        previous() 移动到前一行

        absolute(int row)  移动到指定行

        beforeFirst()  移动到 ResultSet 的最前面

        afterLast()  移动到 ResultSet 的最后面

 

七、释放资源

       JDBC 程序运行完以后,切记要释放程序在运行过程中创建的那些与数据库进行交互的对象。特别是 Connection 对象,是非常稀有的资源,用完后要马上释放,如果 Connection 不能及时正确的关闭,极易导致系统的宕机。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值