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程序的数据库初体验的更多相关文章

  1. JDBC Java 程序从 MySQL 数据库中读取数据,并备份到 xml 文档中

    MySQL 版本:Server version: 5.7.17-log MySQL Community Server (GPL) 相关内容:JDBC Java 程序从 MySQL 数据库中读取数据,并 ...

  2. JDBC Java 程序从 MySQL 数据库中读取数据,并封装到 Javabean 对象中

    MySQL 版本:Server version: 5.7.17-log MySQL Community Server (GPL) 相关内容:JDBC Java 连接 MySQL 数据库 用于测试的 M ...

  3. 【阿里云产品公测】消息队列服务MQS java SDK 机器人应用初体验

    [阿里云产品公测]消息队列服务MQS java SDK 机器人应用初体验 作者:阿里云用户啊里新人   初体验 之 测评环境 由于MQS支持外网访问,因此我在本地做了一些简单测试(可能有些业余),之后 ...

  4. JDBC——Java代码与数据库链接的桥梁

    常用数据库的驱动程序及JDBC URL: Oracle数据库: 驱动程序包名:ojdbc14.jar 驱动类的名字:oracle.jdbc.driver.OracleDriver JDBC URL:j ...

  5. Java程序操作数据库SQLserver详解

    数据库基本操作:增删改查(CRUD) crud介绍(增.删.改.查操作) CRUD是指在做计算处理时的增加(Create).查询(Retrieve)(重新得到数据).更新(Update)和删除(Del ...

  6. JDBC Java 连接 MySQL 数据库

    MySQL 版本:Server version: 5.7.17-log MySQL Community Server (GPL) 用于测试的 MySQL 数据库:game 查看数据库中的表 mysql ...

  7. 说说Java程序和数据库交互的乱码解决

    本文就本人遇到的问题进行讲解 1.通过jdbc直连方式,连接Mysql数据库,从程序向数据库中写入数据出现的乱码解决方案. 当通过程序向Student表中写入一条数据时,写入数据库的内容会产生乱码. ...

  8. MySQL数据库初体验

    一.数据库的基本概念1.数据(Data) 描述事物的符号记录 包括数字,文字,图形,图像,声音,档案记录等 以"记录"形式按统一的格式进行存储 2.表 将不同的记录组织在一起 用来 ...

  9. wampsever 数据库初体验

    Wamp就是Windos Apache Mysql PHP集成安装环境,即在window下的apache.php和mysql的服务器软件.PHP扩展.Apache模块,开启/关闭鼠标点点就搞定,再 也 ...

随机推荐

  1. 浮动,定位,flex布局

    什么是文档流 英文原文是:Normal flow. In CSS 2.1, normal flow includes block formatting of block-level boxes, in ...

  2. Codeforces Round #185 (Div. 1 + Div. 2)

    A. Whose sentence is it? 模拟. B. Archer \[pro=\frac{a}{b}+(1-\frac{a}{b})(1-\frac{c}{d})\frac{a}{b}+( ...

  3. webpack学习(一)项目中安装webpack

    如何在项目中安装webpack,webpack-cli? 前提:电脑安装了 node和npm包管理工具 1 创建项目文件夹或者在已有的项目中打开终端  输入相关命令: npm init 因为已经安装好 ...

  4. JPA批量操作及性能比对

    假设需要批量插入10000条实体数据至数据库.如下是各个操作方法及耗时 环境Spring boot 1.JDBC(JdbcTemplate) pom.xml <dependency> &l ...

  5. 浅谈集合框架六——集合扩展:Arrays工具类、集合与数组相互转换方式;

    最近刚学完集合框架,想把自己的一些学习笔记与想法整理一下,所以本篇博客或许会有一些内容写的不严谨或者不正确,还请大神指出.初学者对于本篇博客只建议作为参考,欢迎留言共同学习. 之前有介绍集合框架的体系 ...

  6. Can you find it?——[二分查找]

    Description Give you three sequences of numbers A, B, C, then we give you a number X. Now you need t ...

  7. 2018.11.16 浪在ACM 集训队第五次测试赛

    2018.11.16 浪在ACM 集训队第五次测试赛 整理人:李继朋 Problem A : 参考博客:[1]朱远迪 Problem B : 参考博客: Problem C : 参考博客:[1]马鸿儒 ...

  8. Spring Security 学习笔记-securityContext过滤器

    位于过滤器顶端,第一个起作用的过滤器.SecurityContextPersistenceFilter 在执行其他过滤器之前,率先判断用户的session中是否已经存在一个SecurityContex ...

  9. 浅谈vue $mount()

    Vue 的$mount()为手动挂载,在项目中可用于延时挂载(例如在挂载之前要进行一些其他操作.判断等),之后要手动挂载上.new Vue时,el和$mount并没有本质上的不同. 具体见代码: 顺便 ...

  10. TransactionDefinition接口中定义了七个事务传播行为

    1.PROPAGATION_REQUIRED如果存在一个事务,则支持当前事务,如果没有事务则开启一个新的事务.使用spring声明式事务,spring使用AOP来支持声明式事务,会根据事务属性,自动在 ...