重生之我在deepseek中学习java 第十二天之数据库编程-Java-E先生的博客
Java
MySQL
大数据
Python
前端
黑科技
大语言模型
    首页 >> 互联网 >> Java

重生之我在deepseek中学习java 第十二天之数据库编程

[导读]:Java学习指南-第十二天:数据库编程1.数据库编程简介数据库编程是指通过程序与数据库进行交互,执行数据的增删改查等操作。Java提供了JDBC(Java Database Connectivity)API来支持数据库编程。2.JDBC简介JDBC是Java用于连接和操作数据库的标准API。通过JDBC,Java程序可以连接到各种关系型数据库,如MySQL...

Java学习指南-第十二天:数据库编程

  1.数据库编程简介

  数据库编程是指通过程序与数据库进行交互,执行数据的增删改查等操作。Java提供了JDBC(Java Database Connectivity)API来支持数据库编程。

  2.JDBC简介

  JDBC是Java用于连接和操作数据库的标准API。通过JDBC,Java程序可以连接到各种关系型数据库,如MySQL、Oracle、PostgreSQL等。

  3.JDBC编程步骤

  JDBC编程通常包括以下几个步骤:

  1. 加载数据库驱动:使用Class.forName()方法加载数据库驱动。

  2. 建立数据库连接:使用DriverManager.getConnection()方法建立与数据库的连接。

  3. 创建Statement对象:使用Connection.createStatement()方法创建Statement对象。

  4. 执行SQL语句:使用Statement.executeQuery()或Statement.executeUpdate()方法执行SQL语句。

  5. 处理结果集:使用ResultSet对象处理查询结果。

  6. 关闭连接:关闭ResultSet、Statement和Connection对象。

  4.JDBC示例

  以下是一个使用JDBC连接MySQL数据库并执行查询的示例。

  4.1加载驱动和建立连接

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

public class Main {
    public static void main(String[] args) {
        String url = "jdbc:mysql://localhost:3306/mydatabase";
        String username = "root";
        String password = "password";

        try {
            // 加载MySQL驱动
            Class.forName("com.mysql.cj.jdbc.Driver");

            // 建立数据库连接
            Connection connection = DriverManager.getConnection(url, username, password);
            System.out.println("Connected to the database!");

            // 关闭连接
            connection.close();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

  4.2执行查询

import java.sql.*;

public class Main {
    public static void main(String[] args) {
        String url = "jdbc:mysql://localhost:3306/mydatabase";
        String username = "root";
        String password = "password";

        try {
            // 加载MySQL驱动
            Class.forName("com.mysql.cj.jdbc.Driver");

            // 建立数据库连接
            Connection connection = DriverManager.getConnection(url, username, password);
            System.out.println("Connected to the database!");

            // 创建Statement对象
            Statement statement = connection.createStatement();

            // 执行查询
            ResultSet resultSet = statement.executeQuery("SELECT * FROM users");

            // 处理结果集
            while (resultSet.next()) {
                int id = resultSet.getInt("id");
                String name = resultSet.getString("name");
                String email = resultSet.getString("email");
                System.out.println("ID: " + id + ", Name: " + name + ", Email: " + email);
            }

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

  4.3执行更新

import java.sql.*;

public class Main {
    public static void main(String[] args) {
        String url = "jdbc:mysql://localhost:3306/mydatabase";
        String username = "root";
        String password = "password";

        try {
            // 加载MySQL驱动
            Class.forName("com.mysql.cj.jdbc.Driver");

            // 建立数据库连接
            Connection connection = DriverManager.getConnection(url, username, password);
            System.out.println("Connected to the database!");

            // 创建Statement对象
            Statement statement = connection.createStatement();

            // 执行更新
            int rowsAffected = statement.executeUpdate("INSERT INTO users (name, email) VALUES ('John', 'john@example.com')");
            System.out.println(rowsAffected + " row(s) affected.");

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

  5.PreparedStatement

  PreparedStatement是Statement的子接口,用于执行预编译的SQL语句,可以提高执行效率并防止SQL注入。

  5.1使用PreparedStatement

import java.sql.*;

public class Main {
    public static void main(String[] args) {
        String url = "jdbc:mysql://localhost:3306/mydatabase";
        String username = "root";
        String password = "password";

        try {
            // 加载MySQL驱动
            Class.forName("com.mysql.cj.jdbc.Driver");

            // 建立数据库连接
            Connection connection = DriverManager.getConnection(url, username, password);
            System.out.println("Connected to the database!");

            // 创建PreparedStatement对象
            String sql = "INSERT INTO users (name, email) VALUES (?, ?)";
            PreparedStatement preparedStatement = connection.prepareStatement(sql);

            // 设置参数
            preparedStatement.setString(1, "Alice");
            preparedStatement.setString(2, "alice@example.com");

            // 执行更新
            int rowsAffected = preparedStatement.executeUpdate();
            System.out.println(rowsAffected + " row(s) affected.");

            // 关闭连接
            preparedStatement.close();
            connection.close();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

  6.事务管理

  事务是数据库操作的基本单位,确保一组操作要么全部成功,要么全部失败。JDBC通过Connection对象提供事务管理功能。

  6.1使用事务

import java.sql.*;

public class Main {
    public static void main(String[] args) {
        String url = "jdbc:mysql://localhost:3306/mydatabase";
        String username = "root";
        String password = "password";

        Connection connection = null;
        try {
            // 加载MySQL驱动
            Class.forName("com.mysql.cj.jdbc.Driver");

            // 建立数据库连接
            connection = DriverManager.getConnection(url, username, password);
            System.out.println("Connected to the database!");

            // 关闭自动提交
            connection.setAutoCommit(false);

            // 创建PreparedStatement对象
            String sql = "INSERT INTO users (name, email) VALUES (?, ?)";
            PreparedStatement preparedStatement = connection.prepareStatement(sql);

            // 设置参数
            preparedStatement.setString(1, "Bob");
            preparedStatement.setString(2, "bob@example.com");

            // 执行更新
            preparedStatement.executeUpdate();

            // 提交事务
            connection.commit();
            System.out.println("Transaction committed.");

            // 关闭连接
            preparedStatement.close();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            if (connection != null) {
                try {
                    // 回滚事务
                    connection.rollback();
                    System.out.println("Transaction rolled back.");
                } catch (SQLException ex) {
                    ex.printStackTrace();
                }
            }
            e.printStackTrace();
        } finally {
            if (connection != null) {
                try {
                    connection.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

image.png

  8.示例代码

// JDBC查询代码见4.2

// PreparedStatement插入代码见5.1

// 事务管理代码见6.1

  9.总结

  今天的内容涵盖了Java数据库编程的基本概念和常用技术,包括JDBC API的使用、PreparedStatement和事务管理。数据库编程是Java编程中非常重要的一部分,务必熟练掌握。明天我们将深入学习Java的反射机制。

  提示:多动手编写代码,尝试使用不同的数据库编程技术解决实际问题,理解数据库编程的工作原理和适用场景。

  祝你学习愉快!


本文来自E先生的博客,如若转载,请注明出处:https://javajz.cn

留言区

联系人:
手   机:
内   容:
验证码:

历史留言

欢迎加Easy的QQ