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对象,释放数据库资源。

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

java 复制代码
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();
            }
        }
    }
}

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

java 复制代码
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:学生性别,字符串类型
sql 复制代码
CREATE TABLE students (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(50) NOT NULL,
    age INT NOT NULL,
    gender VARCHAR(10) NOT NULL
);

二、案例代码

1. 查询学生信息

功能描述

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

代码实现
java 复制代码
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表中插入一条新的学生记录。

代码实现
java 复制代码
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。

代码实现
java 复制代码
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的记录。

代码实现
java 复制代码
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中添加以下依赖:

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

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

相关推荐
楼田莉子1 天前
C++学习:C++11介绍及其新特性学习
开发语言·c++·学习·stl·visual studio
qq_340474021 天前
3.0 labview使用SQLServer
数据库·sqlserver·labview
李贺梖梖1 天前
DAY23 单例设计模式、多例设计模式、枚举、工厂设计模式、动态代理
java
不枯石1 天前
Matlab通过GUI实现点云的随机一致性(RANSAC)配准
开发语言·图像处理·算法·计算机视觉·matlab
武昌库里写JAVA1 天前
Java设计模式之工厂模式
java·vue.js·spring boot·后端·sql
牛马的人生1 天前
MATLAB模块库入门:提升你的工程分析效率
开发语言·其他·matlab
靡樊1 天前
MySQL:C语言链接
数据库·mysql
eve杭1 天前
解锁数据主权与极致性能:AI本地部署的全面指南
大数据·人工智能·5g·ai
光电笑映1 天前
C++list全解析
c语言·开发语言·数据结构·c++·list
数字时代全景窗1 天前
商业航天与数字经济(一):从4G、5G得与失,看6G时代商业航天如何成为新经济引擎?
大数据·人工智能·5g