自学内容网 自学内容网

Java学习教程,从入门到精通,JDBC数据库连接语法知识点及案例代码(92)

JDBC数据库连接语法知识点及案例代码

一、JDBC概述

JDBC(Java Database Connectivity)是Java语言中用于执行SQL语句的API,它为多种关系数据库提供统一访问接口,允许Java程序连接数据库,执行SQL语句,处理查询结果等。

二、JDBC连接数据库步骤

  1. 加载数据库驱动
    • 通过Class.forName()方法加载数据库驱动类,使JDBC驱动程序注册到DriverManager中。
    • 不同数据库的驱动类不同,例如MySQL的驱动类为com.mysql.cj.jdbc.Driver
  2. 建立数据库连接
    • 使用DriverManager.getConnection()方法建立与数据库的连接。
    • 需要提供数据库的URL、用户名和密码。
    • 数据库URL格式通常为jdbc:数据库类型://主机名:端口/数据库名,例如MySQL的URL为jdbc:mysql://localhost:3306/数据库名
  3. 创建Statement对象
    • 通过连接对象ConnectioncreateStatement()方法创建Statement对象,用于执行SQL语句。
  4. 执行SQL语句
    • 使用Statement对象的executeQuery()方法执行查询SQL语句,返回ResultSet对象。
    • 使用executeUpdate()方法执行增删改SQL语句,返回受影响的行数。
  5. 处理结果(对于查询操作)
    • 通过ResultSet对象遍历查询结果,获取数据。
  6. 关闭连接
    • 关闭ResultSetStatementConnection对象,释放数据库资源。

三、案例代码 - 查询数据库中的数据

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

public class JdbcExample {
    public static void main(String[] args) {
        // 数据库URL、用户名和密码
        String url = "jdbc:mysql://localhost:3306/testdb";
        String username = "root";
        String password = "123456";

        Connection conn = null;
        Statement stmt = null;
        ResultSet rs = null;

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

            // 2. 建立数据库连接
            conn = DriverManager.getConnection(url, username, password);

            // 3. 创建Statement对象
            stmt = conn.createStatement();

            // 4. 执行SQL语句
            String sql = "SELECT * FROM users";
            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.println("ID: " + id + ", Name: " + name + ", Age: " + age);
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            // 6. 关闭连接
            try {
                if (rs != null) rs.close();
                if (stmt != null) stmt.close();
                if (conn != null) conn.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
}

四、案例代码 - 向数据库中插入数据

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

public class JdbcInsertExample {
    public static void main(String[] args) {
        // 数据库URL、用户名和密码
        String url = "jdbc:mysql://localhost:3306/testdb";
        String username = "root";
        String password = "123456";

        Connection conn = null;
        Statement stmt = null;

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

            // 2. 建立数据库连接
            conn = DriverManager.getConnection(url, username, password);

            // 3. 创建Statement对象
            stmt = conn.createStatement();

            // 4. 执行SQL语句
            String sql = "INSERT INTO users(name, age) VALUES('Tom', 25)";
            int rowsAffected = stmt.executeUpdate(sql);

            // 判断插入是否成功
            if (rowsAffected > 0) {
                System.out.println("插入成功");
            } else {
                System.out.println("插入失败");
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            // 5. 关闭连接
            try {
                if (stmt != null) stmt.close();
                if (conn != null) conn.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
}

以上代码中的数据库名称、表结构等需要根据实际情况进行调整。在运行代码前,确保数据库已正确安装并运行,且数据库驱动已添加到项目依赖中。

以下是一些更具体的JDBC操作数据库的案例,包括查询、插入、更新和删除操作,每个案例都基于一个假设的“学生信息管理系统”数据库。

一、数据库表结构

假设我们有一个名为students的表,表结构如下:

  • id:学生编号,主键,自增
  • name:学生姓名,字符串类型
  • age:学生年龄,整型
  • gender:学生性别,字符串类型
CREATE TABLE students (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(50) NOT NULL,
    age INT NOT NULL,
    gender VARCHAR(10) NOT NULL
);

二、案例代码

1. 查询学生信息

功能描述

查询所有学生的信息,并打印出来。

代码实现
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

public class QueryStudents {
    public static void main(String[] args) {
        // 数据库URL、用户名和密码
        String url = "jdbc:mysql://localhost:3306/studentdb";
        String username = "root";
        String password = "123456";

        Connection conn = null;
        Statement stmt = null;
        ResultSet rs = null;

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

            // 2. 建立数据库连接
            conn = DriverManager.getConnection(url, username, password);

            // 3. 创建Statement对象
            stmt = conn.createStatement();

            // 4. 执行SQL语句
            String sql = "SELECT * FROM students";
            rs = stmt.executeQuery(sql);

            // 5. 处理结果
            System.out.println("学生信息列表:");
            while (rs.next()) {
                int id = rs.getInt("id");
                String name = rs.getString("name");
                int age = rs.getInt("age");
                String gender = rs.getString("gender");
                System.out.println("ID: " + id + ", Name: " + name + ", Age: " + age + ", Gender: " + gender);
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            // 6. 关闭连接
            try {
                if (rs != null) rs.close();
                if (stmt != null) stmt.close();
                if (conn != null) conn.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
}

2. 插入学生信息

功能描述

students表中插入一条新的学生记录。

代码实现
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;

public class InsertStudent {
    public static void main(String[] args) {
        // 数据库URL、用户名和密码
        String url = "jdbc:mysql://localhost:3306/studentdb";
        String username = "root";
        String password = "123456";

        Connection conn = null;
        Statement stmt = null;

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

            // 2. 建立数据库连接
            conn = DriverManager.getConnection(url, username, password);

            // 3. 创建Statement对象
            stmt = conn.createStatement();

            // 4. 执行SQL语句
            String sql = "INSERT INTO students(name, age, gender) VALUES('Alice', 20, 'Female')";
            int rowsAffected = stmt.executeUpdate(sql);

            // 判断插入是否成功
            if (rowsAffected > 0) {
                System.out.println("插入成功");
            } else {
                System.out.println("插入失败");
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            // 5. 关闭连接
            try {
                if (stmt != null) stmt.close();
                if (conn != null) conn.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
}

3. 更新学生信息

功能描述

更新指定学生的信息,例如将学生ID为1的年龄修改为21。

代码实现
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;

public class UpdateStudent {
    public static void main(String[] args) {
        // 数据库URL、用户名和密码
        String url = "jdbc:mysql://localhost:3306/studentdb";
        String username = "root";
        String password = "123456";

        Connection conn = null;
        Statement stmt = null;

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

            // 2. 建立数据库连接
            conn = DriverManager.getConnection(url, username, password);

            // 3. 创建Statement对象
            stmt = conn.createStatement();

            // 4. 执行SQL语句
            String sql = "UPDATE students SET age = 21 WHERE id = 1";
            int rowsAffected = stmt.executeUpdate(sql);

            // 判断更新是否成功
            if (rowsAffected > 0) {
                System.out.println("更新成功");
            } else {
                System.out.println("更新失败");
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            // 5. 关闭连接
            try {
                if (stmt != null) stmt.close();
                if (conn != null) conn.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
}

4. 删除学生信息

功能描述

删除指定学生的信息,例如删除学生ID为2的记录。

代码实现
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;

public class DeleteStudent {
    public static void main(String[] args) {
        // 数据库URL、用户名和密码
        String url = "jdbc:mysql://localhost:3306/studentdb";
        String username = "root";
        String password = "123456";

        Connection conn = null;
        Statement stmt = null;

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

            // 2. 建立数据库连接
            conn = DriverManager.getConnection(url, username, password);

            // 3. 创建Statement对象
            stmt = conn.createStatement();

            // 4. 执行SQL语句
            String sql = "DELETE FROM students WHERE id = 2";
            int rowsAffected = stmt.executeUpdate(sql);

            // 判断删除是否成功
            if (rowsAffected > 0) {
                System.out.println("删除成功");
            } else {
                System.out.println("删除失败");
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            // 5. 关闭连接
            try {
                if (stmt != null) stmt.close();
                if (conn != null) conn.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
}

三、注意事项

  1. 数据库连接信息:确保数据库URL、用户名和密码正确无误,并且数据库已正确安装并运行。

  2. 数据库驱动:确保已将数据库驱动添加到项目依赖中。对于MySQL,可以在pom.xml中添加以下依赖:

    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.28</version>
    </dependency>
    
  3. 异常处理:在实际项目中,建议使用更详细的异常处理逻辑,例如使用try-catch块捕获不同类型的异常,并进行相应的处理。

  4. 资源关闭:确保在finally块中关闭所有数据库资源,避免资源泄漏。


原文地址:https://blog.csdn.net/qq_45746668/article/details/145194128

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!