java—JDBC

目录

1.JDBC的概述

2.JDBC的使用

2.1 加载驱动程序

2.2 建立连接

2.3 创建Statement对象

2.4 执行SQL查询

2.5 处理结果集

2.6 关闭资源

3.注意事项


1.JDBC的概述

1.1 Java数据库连接(Java Database Connectivity,JDBC)是Java语言中用于执行SQL语句的API。它允许Java程序与各种关系型数据库进行通信和交互,包括MySQL、Oracle、SQL Server等。JDBC提供了一种标准的方式来连接数据库、发送查询和更新语句、以及获取查询结果。通过JDBC,开发人员可以编写能够跨多种数据库平台运行的可移植性强的数据库应用程序。

1.2 JDBC与数据库驱动的关系:接口与实现的关系。

1.3 JDBC规范(掌握四个核心对象):

DriverManager:用于注册驱动

Connection: 表示与数据库创建的连接

Statement: 操作数据库sql语句的对象

ResultSet: 结果集或一张虚拟表

2.JDBC的使用

2.1 加载驱动程序

使用Class.forName()加载JDBC驱动程序。

2.2 建立连接

使用DriverManager.getConnection()与数据库建立连接。

2.3 创建Statement对象

使用conn.createStatement()创建Statement对象,用于执行SQL查询。

2.4 执行SQL查询

使用stmt.executeQuery()执行查询并获取结果集。

2.5 处理结果集

通过循环遍历ResultSet并提取数据

2.6 关闭资源

关闭ResultSetStatementConnection,确保资源被正确释放。

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class JDBCExample {
    // JDBC驱动程序的类名
    private static final String JDBC_DRIVER = "com.mysql.cj.jdbc.Driver";
    // 数据库URL
    private static final String DB_URL = "jdbc:mysql://localhost:3306/your_database?useSSL=false&serverTimezone=UTC";

    // 数据库用户名和密码
    private static final String USER = "your_username";
    private static final String PASS = "your_password";

    public static void main(String[] args) {
        Connection conn = null;
        Statement stmt = null;

        try {
            // 1. 加载JDBC驱动程序
            Class.forName(JDBC_DRIVER);

            // 2. 建立连接
            System.out.println("Connecting to database...");
            conn = DriverManager.getConnection(DB_URL, USER, PASS);

            // 3. 创建Statement对象
            System.out.println("Creating statement...");
            stmt = conn.createStatement();

            // 4. 执行SQL查询
            String sql = "SELECT id, name, age FROM Users";
            ResultSet rs = stmt.executeQuery(sql);

            // 5. 处理结果集
            while (rs.next()) {
                // 检索数据
                int id = rs.getInt("id");
                String name = rs.getString("name");
                int age = rs.getInt("age");

                // 显示数据
                System.out.print("ID: " + id);
                System.out.print(", Name: " + name);
                System.out.println(", Age: " + age);
            }

            // 6. 关闭结果集
            rs.close();
        } catch (SQLException se) {
            // 处理SQL错误
            se.printStackTrace();
        } catch (Exception e) {
            // 处理其他错误
            e.printStackTrace();
        } finally {
            // 7. 关闭Statement和Connection
            try {
                if (stmt != null) {
                    stmt.close();
                }
            } catch (SQLException se2) {
                // 忽略
            }
            try {
                if (conn != null) {
                    conn.close();
                }
            } catch (SQLException se) {
                se.printStackTrace();
            }
        }

        System.out.println("Goodbye!");
    }
}

这个示例展示了最基本的JDBC操作。根据具体的需求,可能需要添加额外的步骤,例如处理事务、执行更新语句、使用PreparedStatement以防止SQL注入等。

3.注意事项

3.1异常处理:JDBC操作涉及到与数据库的交互,可能会发生各种异常,如SQL异常、连接异常等。确保在代码中进行适当的异常处理,以避免程序崩溃或安全漏洞。

3.2连接管理:数据库连接是有限资源,需要在使用完毕后及时关闭以释放资源。尤其是在使用连接池时,更要注意及时释放连接,避免资源泄露和性能问题。

3.3SQL注入:为了防止SQL注入攻击,尽量使用PreparedStatement代替Statement执行动态SQL语句,并使用参数化查询来处理用户输入的数据。

3.4事务管理:对于涉及多个数据库操作的业务,需要考虑事务管理。通过Connection.setAutoCommit(false)关闭自动提交模式,然后使用Connection.commit()Connection.rollback()手动管理事务。

3.5线程安全性ConnectionStatement不是线程安全的对象,应该在单个线程内使用,并在使用完毕后及时关闭。

3.6性能优化:避免在循环中频繁创建和关闭连接,可以使用连接池来提高性能。另外,尽量减少网络传输的数据量,优化SQL查询语句,使用索引等方式来提高查询效率。

3.7数据库驱动版本:确保使用的数据库驱动程序版本与数据库服务器版本兼容,并且与Java版本兼容。

3.8关闭资源:不要忘记在finally块中关闭所有打开的资源,以确保在发生异常时资源能够被正确释放。

  • 23
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值