
MySQL~什么是Java的JDBC编程、如何利用JDBC实现数据库的增删改查
数据库连接管理:通过 SQL语句执行:支持预编译statement和prepared statement,后者用于防止SQL注入攻击 数据库操作:支持增删改查(CRUD)操作 结果集处理:处理查询结果集的遍历和操作 面向接口编程:操作数据库的方法调用遵循Java接口规范,代码更具可读性 数据库无关性:JDBC抽象了数据库的具体实现,开发者无需关注数据库品牌 程序移植性:编写好的JDBC程序可以轻松迁移至支持该数据库品牌的新环境 资源管理:确保每次数据库操作后正确关闭资源 异常处理:使用try-catch块管理可能的异常 安全配置:确保数据库连接信息保密
发布日期:2021-05-07 13:56:09
浏览次数:22
分类:精选文章
本文共 4101 字,大约阅读时间需要 13 分钟。
JDBC编程入门:基础知识与实践操作
JDBC(Java Database Connectivity)是Java编程中用于连接和操作数据库的标准API。它通过定义统一的操作接口,使开发者能够以一种抽象、规范的方式与各种关系数据库交互。无论是MySQL、PostgreSQL还是其他数据库,JDBC都提供了一个一致的操作界面,从而简化了数据库开发的复杂性。
JDBC的核心概念
JDBC的本质是一个客户端-服务器模型,通过Java程序与数据库服务器建立连接,执行SQL操作。其核心实现依赖于数据库厂商提供的驱动程序,JDBC API通过这些驱动程序将Java程序与数据库隔离起来,使得数据库的具体实现对开发者透明。
JDBC的主要功能包括:
DataSource
和Connection
对象实现数据库连接JDBC的优势
相比直接操作数据库API,JDBC具有以下显著优势:
JDBC操作步骤
1. 准备环境
- 数据库驱动:确保已安装目标数据库的JDBC驱动包
- 数据源配置:通过
DataSource
获取数据库连接
2. 连接数据库
Connection connection = dataSource.getConnection();
调用getConnection()
方法获取数据库连接,提供配置参数如URL、用户名和密码。
3. 编写SQL语句
- 预编译statement:用于简单的静态SQL语句
- prepared statement:用于动态参数,防SQL注入
4. 执行操作
- 读取数据:使用
executeQuery()
获取结果集 - 写入数据:使用
executeUpdate()
执行增删改操作
5. 资源释放
确保正确关闭资源:
statement.close();connection.close();
JDBC示例:基本操作
插入操作
public static void testJDBCInsert(int id, String name, int classId) throws SQLException { DataSource dataSource = new MysqlDataSource(); ((MysqlDataSource)dataSource).setURL("jdbc:mysql://localhost:3306/student"); ((MysqlDataSource)dataSource).setUser("root"); ((MysqlDataSource)dataSource).setPassword("password"); Connection connection = dataSource.getConnection(); String sql = "INSERT INTO student (id, name, classId) VALUES (?, ?, ?)"; PreparedStatement statement = connection.prepareStatement(sql); statement.setInt(1, id); statement.setString(2, name); statement.setInt(3, classId); int result = statement.executeUpdate(); System.out.println("插入结果:" + (result == 1 ? "成功" : "失败")); statement.close(); connection.close();}
删除操作
public static void testJDBCDelete(int id) throws SQLException { DataSource dataSource = new MysqlDataSource(); ((MysqlDataSource)dataSource).setURL("jdbc:mysql://localhost:3306/student"); ((MysqlDataSource)dataSource).setUser("root"); ((MysqlDataSource)dataSource).setPassword("password"); Connection connection = dataSource.getConnection(); String sql = "DELETE FROM student WHERE id = ?"; PreparedStatement statement = connection.prepareStatement(sql); statement.setInt(1, id); int result = statement.executeUpdate(); System.out.println("删除结果:" + (result == 1 ? "成功" : "失败")); statement.close(); connection.close();}
更新操作
public static void testJDBCUpdate(int id, String name) throws SQLException { DataSource dataSource = new MysqlDataSource(); ((MysqlDataSource)dataSource).setURL("jdbc:mysql://localhost:3306/student"); ((MysqlDataSource)dataSource).setUser("root"); ((MysqlDataSource)dataSource).setPassword("password"); Connection connection = dataSource.getConnection(); String sql = "UPDATE student SET name = ? WHERE id = ?"; PreparedStatement statement = connection.prepareStatement(sql); statement.setString(1, name); statement.setInt(2, id); int result = statement.executeUpdate(); System.out.println("修改结果:" + (result == 1 ? "成功" : "失败")); statement.close(); connection.close();}
查询操作
public static void testJDBCSelect() throws SQLException { DataSource dataSource = new MysqlDataSource(); ((MysqlDataSource)dataSource).setURL("jdbc:mysql://localhost:3306/student"); ((MysqlDataSource)dataSource).setUser("root"); ((MysqlDataSource)dataSource).setPassword("password"); Connection connection = dataSource.getConnection(); String sql = "SELECT * FROM student"; PreparedStatement statement = connection.prepareStatement(sql); ResultSet resultSet = statement.executeQuery(); while (resultSet.next()) { System.out.println("学生信息:id=" + resultSet.getInt("id") + ",姓名=" + resultSet.getString("name") + ",班级=" + resultSet.getInt("classId")); } resultSet.close(); statement.close(); connection.close();}
注意事项
通过以上步骤和示例,开发者可以轻松掌握JDBC的使用方法,实现对各种关系数据库的高效操作。
发表评论
最新留言
不错!
[***.144.177.141]2025年04月09日 17时20分26秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
TypeScript系列(一)- TypeScript简介与编译配置
2019-03-04
TypeScript系列文章导航
2019-03-04
hibernate和mybatis的区别
2019-03-04
Java中Map的用法详解
2019-03-04
base64编码字符串和图片的互转
2019-03-04
汉字转为拼音
2019-03-04
linux 下安装kolla报错 提示Cannot uninstall requests
2019-03-04
Linux RPM和yum命令的使用技巧
2019-03-04
C++ throw、try、catch、noexcept
2019-03-04
C指针之函数指针与typedef
2019-03-04
CentOS8 字体大小调整
2019-03-04
设计模式之组合模式
2019-03-04
设计模式之外观模式
2019-03-04
Linux 验证、数字证书、RPM包中文件的提取
2019-03-04
《Redis开发与运维》阅读笔记:键管理之单个键管理
2019-03-04
(恋上数据结构笔记):优先级队列(Priority Queue)
2019-03-04
(Python学习笔记):字典
2019-03-04
(C++11/14/17学习笔记):并发基本概念及实现,进程、线程基本概念
2019-03-04