JDBC
本文最后更新于308 天前,其中的信息可能已经过时,如有错误请发送邮件到3063503032@qq.com

1. JDBC简介:

  • Java数据库连接(JDBC)是一种用于在Java程序中访问数据库的API(应用程序接口)。
  • JDBC允许Java应用程序与各种关系型数据库进行通信,执行SQL查询,更新数据库记录等操作。

2. JDBC架构:

  • JDBC驱动管理器(Driver Manager):负责管理数据库驱动。
  • JDBC驱动程序(Driver):与特定数据库通信的实现,提供给驱动管理器。
  • JDBC连接(Connection):表示与数据库的连接。
  • JDBC语句(Statement):用于执行SQL语句。
  • JDBC结果集(ResultSet):表示从数据库返回的结果集。

3. JDBC连接步骤:

  • 加载数据库驱动程序:使用Class.forName("com.mysql.cj.jdbc.Driver")加载MySQL驱动。
  • 建立数据库连接:使用DriverManager.getConnection(url, username, password)建立与数据库的连接。
  • 创建和执行SQL语句:使用StatementPreparedStatement对象执行SQL语句。
  • 处理结果集:通过ResultSet对象处理查询结果。

4. JDBC代码示例:   import java.sql.*;

  public class JDBCSample {
      public static void main(String[] args) {
          try {
              // 加载数据库驱动
              Class.forName(“com.mysql.cj.jdbc.Driver”);

              // 建立数据库连接
              String url = “jdbc:mysql://localhost:3306/mydatabase”;
              String username = “root”;
              String password = “password”;
              Connection connection = DriverManager.getConnection(url, username, password);

              // 创建和执行SQL语句
              Statement statement = connection.createStatement();
              ResultSet resultSet = statement.executeQuery(“SELECT * FROM mytable”);

              // 处理结果集
              while (resultSet.next()) {
                  System.out.println(resultSet.getString(“column1”) + “, ” + resultSet.getString(“column2”));
              }

              // 关闭连接
              resultSet.close();
              statement.close();
              connection.close();
          } catch (Exception e) {
              e.printStackTrace();
          }
      }
  }

5. 注意事项:

  • 异常处理: 必须正确处理SQLException,防止程序因数据库连接问题而崩溃。
  • 资源释放: 必须手动关闭Connection、Statement和ResultSet等资源,以防止内存泄漏。
  • 使用PreparedStatement: 推荐使用PreparedStatement而不是Statement,以避免SQL注入攻击,并提高性能。
  • 连接池: 考虑使用连接池以提高性能,减少数据库连接的开销。
  • 事务管理: 对于需要事务管理的操作,使用Connection的beginTransaction、commit和rollback等方法。

事务处理

在JDBC中,你可以使用Connection对象的setAutoCommitcommitrollback方法来实现事务管理。以下是一个简单的示例,演示如何使用事务进行数据库操作并进行回滚:import java.sql.*;

public class TransactionExample {
   public static void main(String[] args) {
       Connection connection = null;

       try {
           // 加载数据库驱动
           Class.forName(“com.mysql.cj.jdbc.Driver”);

           // 建立数据库连接
           String url = “jdbc:mysql://localhost:3306/mydatabase”;
           String username = “root”;
           String password = “password”;
           connection = DriverManager.getConnection(url, username, password);

           // 关闭自动提交,开始事务
           connection.setAutoCommit(false);

           // 执行第一个SQL语句
           Statement statement = connection.createStatement();
           statement.executeUpdate(“INSERT INTO mytable (column1, column2) VALUES (‘value1’, ‘value2’)”);

           // 执行第二个SQL语句
           statement.executeUpdate(“UPDATE mytable SET column1 = ‘newvalue’ WHERE column2 = ‘value2′”);

           // 提交事务
           connection.commit();

           // 关闭连接
           statement.close();
           connection.close();

      } catch (SQLException | ClassNotFoundException e) {
           // 发生异常时回滚事务
           try {
               if (connection != null) {
                   connection.rollback();
              }
          } catch (SQLException rollbackException) {
               rollbackException.printStackTrace();
          }

           e.printStackTrace();
      } finally {
           try {
               if (connection != null) {
                   // 恢复自动提交状态
                   connection.setAutoCommit(true);
                   connection.close();
              }
          } catch (SQLException closeException) {
               closeException.printStackTrace();
          }
      }
  }
}

通过调用setAutoCommit(false)关闭了自动提交功能,然后在执行两个SQL语句后,使用commit()提交事务。如果任何一个SQL语句执行失败,将捕获异常并调用rollback()回滚事务。最后,在finally块中,确保在任何情况下都会关闭数据库连接,并将自动提交状态恢复为true。这有助于保持数据库连接的一致性和可靠性。

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇