【JDBC】Java程序的数据库初体验
JDBC是什么
JDBC是一种能够用来执行SQL语句的Java API【接口】。
它是Java提供的一种规范,让各大数据库厂商遵循此规范完成自己的数据库连接驱动【实现接口】。
JDBC的入门程序(这里我们以操作MySQL数据库为例)
步骤:
导入相关数据库驱动包
加载驱动类
创建数据库连接对象
创建可执行sql语句的对象
执行sql语句,得到返回结果
- 关闭连接
首先必须导入MySQL的驱动包(如果没有导入驱动包,加载驱动类时会抛出ClassNotFoundException)
- import java.sql.Connection;
- import java.sql.DriverManager;
- import java.sql.ResultSet;
- import java.sql.SQLException;
- import java.sql.Statement;
- public class Jdbc {
- public static void main(String[] args) {
- Connection connection = null;
- Statement statement = null;
- ResultSet resultSet = null;
- try {
- // 加载数据库驱动类
- Class.forName("com.mysql.cj.jdbc.Driver");
- // 通过数据库地址、数据库用户名、数据库密码三个参数创建数据库连接
- connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/ssm?serverTimezone=GMT%2B8",
- "root", "root");
- // 创建可执行SQL语句的statement对象
- statement = connection.createStatement();
- // 编写SQL语句
- String sql = "select * from user";
- // 执行SQL语句,得到查询结果集对象
- resultSet = statement.executeQuery(sql);
- // 迭代遍历结果集对象,获取数据
- while (resultSet.next()) {
- System.out.print(resultSet.getInt(1)+":");
- System.out.println(resultSet.getString(2));
- }
- } catch (ClassNotFoundException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (SQLException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } finally {
- // 关闭资源,关闭顺序根据调用自下而上
- if (resultSet != null) {
- try {
- resultSet.close();
- } catch (SQLException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- if (statement != null) {
- try {
- statement.close();
- } catch (SQLException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- if (connection != null) {
- try {
- connection.close();
- } catch (SQLException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- }
- }
- }
上面我们已经简单使用了jdbc完成了对数据库的查询,下面我们介绍JDBC中的几个核心对象。
核心对象
Connection
Java程序与数据库之间的连接接口。
常用方法:
- // 创建可执行sql语句的statement对象
- Statement createStatement() throws SQLException;
- // 创建可执行预编译sql语句的prepareStatement对象
- PreparedStatement prepareStatement(String sql) throws SQLException;
- // 设置事务是否自动提交
- void setAutoCommit(boolean autoCommit) throws SQLException;
- // 提交事务
- void commit() throws SQLException;
- // 回滚事务
- void rollback() throws SQLException;
- // 关闭连接
- void close() throws SQLException;
Statement
可执行sql语句的对象,能够对数据库进行增删改查操作。
常用方法:
- // 向数据库发送查询sql语句,返回查询结果集对象
- ResultSet executeQuery(String sql) throws SQLException;
- // 向数据库发送更新(增删改)sql语句,返回数据库受影响行数
- int executeUpdate(String sql) throws SQLException;
- // 关闭资源
- void close() throws SQLException;
PreparedStatement
PreparedStatement对象在我们的入门程序中并没有出现,但也是JDBC中的常用对象。它继承自Statement对象,比Statement对象更强大。
Statement对象编译sql语句时,如果sql语句有参数变量,就需要进行拼接,如果参数变量较多,就会使sql变得非常复杂。和Statement对象相同,PreparedStatement也是由Connection对象创建的,不同的是PreparedStatement对象的创建需要一条sql语句作为参数,sql语句中的参数变量用占位符'?'表示,它能够调用set方法动态设置sql语句中的参数变量,而不是Statement那样使用字符串拼接。
常用方法:
- // 根据sql语句中的变量的数据类型设置变量
- // 该方法有两个参数,第一个参数是指定sql语句中变量的位置,第二个是设置的值
- void setString(int parameterIndex, String x) throws SQLException;
- // 查询
- ResultSet executeQuery() throws SQLException;
- // 更新(增删改)
- int executeUpdate() throws SQLException;
ResultSet
执行查询语句返回的数据结果集。当执行了查询sql语句时,会返回一个结果集对象。可通过调用next()方法迭代遍历结果集获取我们所需的数据。
常用方法:
- // 迭代结果集,查看是否有下一条数据
- boolean next() throws SQLException;
- // 访问器,根据数据类型调用指定访问器。
- // 每种数据类型的访问器都有数字、字符串两种参数,
- // 数字参数表示第几列,字符串参数表示列名。
- String getString(int columnIndex) throws SQLException;
- String getString(String columnLabel) throws SQLException;
- // 关闭结果集对象资源
- void close() throws SQLException;
—END—
如果文章有错的地方欢迎指正,大家互相交流。欢迎关注公众号developerLeo!会更新一些个人学习的文章。
【JDBC】Java程序的数据库初体验的更多相关文章
- JDBC Java 程序从 MySQL 数据库中读取数据,并备份到 xml 文档中
MySQL 版本:Server version: 5.7.17-log MySQL Community Server (GPL) 相关内容:JDBC Java 程序从 MySQL 数据库中读取数据,并 ...
- JDBC Java 程序从 MySQL 数据库中读取数据,并封装到 Javabean 对象中
MySQL 版本:Server version: 5.7.17-log MySQL Community Server (GPL) 相关内容:JDBC Java 连接 MySQL 数据库 用于测试的 M ...
- 【阿里云产品公测】消息队列服务MQS java SDK 机器人应用初体验
[阿里云产品公测]消息队列服务MQS java SDK 机器人应用初体验 作者:阿里云用户啊里新人 初体验 之 测评环境 由于MQS支持外网访问,因此我在本地做了一些简单测试(可能有些业余),之后 ...
- JDBC——Java代码与数据库链接的桥梁
常用数据库的驱动程序及JDBC URL: Oracle数据库: 驱动程序包名:ojdbc14.jar 驱动类的名字:oracle.jdbc.driver.OracleDriver JDBC URL:j ...
- Java程序操作数据库SQLserver详解
数据库基本操作:增删改查(CRUD) crud介绍(增.删.改.查操作) CRUD是指在做计算处理时的增加(Create).查询(Retrieve)(重新得到数据).更新(Update)和删除(Del ...
- JDBC Java 连接 MySQL 数据库
MySQL 版本:Server version: 5.7.17-log MySQL Community Server (GPL) 用于测试的 MySQL 数据库:game 查看数据库中的表 mysql ...
- 说说Java程序和数据库交互的乱码解决
本文就本人遇到的问题进行讲解 1.通过jdbc直连方式,连接Mysql数据库,从程序向数据库中写入数据出现的乱码解决方案. 当通过程序向Student表中写入一条数据时,写入数据库的内容会产生乱码. ...
- MySQL数据库初体验
一.数据库的基本概念1.数据(Data) 描述事物的符号记录 包括数字,文字,图形,图像,声音,档案记录等 以"记录"形式按统一的格式进行存储 2.表 将不同的记录组织在一起 用来 ...
- wampsever 数据库初体验
Wamp就是Windos Apache Mysql PHP集成安装环境,即在window下的apache.php和mysql的服务器软件.PHP扩展.Apache模块,开启/关闭鼠标点点就搞定,再 也 ...
随机推荐
- H3C IP及其相关协议
- JavaScript 按位与和逻辑与
逻辑与操作符有两个和好(&&)表示,有两个操作数,如下面的例子所示: var result = true && false; 第一个操作数 第二个操作数 结果 tr ...
- 基于thinkphp实现根据用户ip判断地理位置并提供对应天气信息的应用
https://blog.csdn.net/MyCodeDream/article/details/46706469 我们都知道,在很多的网站都提供了给用户提供天气预报的功能,有时会发现,用户即使不输 ...
- 什么是响应式设计?响应式设计的基本原理是什么?如何兼容低版本的 IE?
响应式网站设计(Responsive Web design)的理念是:集中创建页面的图片排版大小,可以智能地根据用户行为以及 使用的设备环境(系统平台.屏幕尺寸.屏幕定向等)进行相对应的布局,无论用户 ...
- ABSD 基于架构的软件设计方法方法简介(摘抄)
ABSD(Architecture-Based Software Design)基于架构的软件设计方法 有三个基础: 第一个基础是功能分解.在功能分解中,ABSD方法使用已有的基于模块的内聚和耦合技术 ...
- [转]SpringBoot整合Swagger2以及生产环境的安全问题处理
1.创建springboot项目 https://www.cnblogs.com/i-tao/p/8878562.html 这里我们使用多环境配置: application-dev.yml(开发环境) ...
- [转]vue - 前置工作 - 目录功能介绍
一个DEMOS的完整目录(由于GWF问题,我就不一一打开网站一个个去搜索并且解释了)可以去关注:https://www.cnblogs.com/ye-hcj build build.js(本文来自ht ...
- Python--day60--web框架分类和wsgiref模块使用介绍
- Vue 设置class样式
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- asp dotnet core 图片在浏览器没访问可能原因
我写了一个项目用来广告就用到广告的图片,但是广告的图片放在博客的链接无法访问,连我的方法都没有调用,而我尝试网页直接访问图片链接是可以访问的,最后找到原因是广告插件禁用了图片访问 我在一个方法创建了广 ...