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块中关闭所有数据库资源,避免资源泄漏。

相关推荐
weixin_307779132 分钟前
Hive集群之间迁移的Linux Shell脚本
大数据·linux·hive·bash·迁移学习
Coding小公仔7 分钟前
C++ bitset 模板类
开发语言·c++
KK溜了溜了16 分钟前
JAVA-springboot 整合Redis
java·spring boot·redis
小赖同学啊25 分钟前
物联网数据安全区块链服务
开发语言·python·区块链
天河归来26 分钟前
使用idea创建springboot单体项目
java·spring boot·intellij-idea
程序员柳29 分钟前
基于微信小程序的校园二手交易平台、微信小程序校园二手商城源代码+数据库+使用说明,layui+微信小程序+Spring Boot
数据库·微信小程序·layui
shimly12345632 分钟前
bash 脚本比较 100 个程序运行时间,精确到毫秒,脚本
开发语言·chrome·bash
weixin_4786897642 分钟前
十大排序算法汇总
java·算法·排序算法
码荼1 小时前
学习开发之hashmap
java·python·学习·哈希算法·个人开发·小白学开发·不花钱不花时间crud