JDBC
JDBC的全称为:JavaDataBaseConnectivity。翻译过来就是Java数据库连接。
JDBC的作用:看名字就知道,JDBC就是用于连接Java和数据库的一个技术。
废话不多说,我们直接进入主题。
JDCB的使用
JDBC技术的使用我们主要围绕三个问题来学习。
- JDBC技术是什么?
- JDBC技术有什么用,能做什么?
- JDBC怎么用?
JDBC技术是什么?这个问题文章开篇已经讲了,这里就不再赘述了。
那么JDBC有什么用呢?上面也提到了,主要就是用于连接Java语言和数据库。
什么是连接Java语言和数据库呢?
用大白话来说就是:“我要用java语言来使用数据库”。或者说:“我要通过编写java语言来使用数据库”。这个时候JDBC技术就可以实现你的这个想法。也就是说JDBC是java语言和数据库的桥梁。有了桥梁才可以互通吧?
当我们使用JDBC技术后,Java语言和数据库也就互通了,这个时候我们就可以通过编写Java代码来操作数据可了。
JDBC怎么用?
JDBC 的 API 提供了以下接口和类:
API:应用程序接口 Application Programming Interface
Connection : 此接口具有接触数据库的所有方法。该连接对象表示通信上下文,即,所有与数据库的通信仅通过这个连接对象进行。
PreparedStatement : 使用创建于这个接口的对象将 SQL 语句提交到数据库。
ResultSet : 在 SQL 查询后,保存获得的数据。并且它可以作为一个迭代器遍历数据。
JDBC技术的使用流程:
- 注册驱动(可以省略)
- 获取连接对象
- 编写sql语句
- 获取预编译对象
- 填写占位符数据
- 执行sql语句
- 处理返回结果
- 关闭资源
上代码咯:
public class JDBCTest {
public static void main(String[] args) {
Driver driver = null;//驱动对象
Connection conn = null;//连接对象
PreparedStatement ps = null;//预编译对象
ResultSet rs = null;//结果集对象
try {
//注册驱动
//方式一
driver = new com.mysql.jdbc.Driver();
DriverManager.registerDriver(driver);
//方式二
Class.forName("com.mysql.jdbc.Driver");
//获取连接对象
// mysql是8.0及以上的用这个url
String url8 = "jdbc:mysql://localhost:3306/bjpowernode?useUnicode=true&serverTimezone=UTC";
// mysql低于8.0的用这个url
String url5 = "jdbc:msql://localhost:3306/bjpowernode?useUnicode=true&CharacterEncoding=utf8";
//username,password写自己的mysql账号密码就好了
String username = "root";
String password = "zxcvbnm1";
conn = DriverManager.getConnection(url8,username,password);
//sql语句
String sql = "select * from student where stuNo = ?";
//获取预编译对象
ps = conn.prepareStatement(sql);
//填写占位符数据
ps.setString(1,"123");
//执行sql语句
rs = ps.executeQuery();
//处理返回结果
while(rs.next()){
System.out.println("学生的姓名:"+rs.getString("name"));
System.out.println("学生的年龄"+rs.getString("age"));
}
} catch (SQLException e) {
e.printStackTrace();
}finally{
//关闭资源
if (rs != null){
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (ps != null){
try {
ps.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (conn != null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
}
现在我们慢慢分析一下整个流程吧。
-
注册驱动(可以省略)
一般推荐使用第二种方式,更加快捷。当然,也可以省略这一步骤直接进入第二步。
-
获取连接对象
获取连接对象我们需要三个参数:url(数据库驱动和数据库的地址)、username(数据库的账号)、password(数据库的密码)。 -
编写sql语句
占位符:占位符是一个动态参数,根据业务需求进行变化。符号为 ? 。我们通过PreparedStatement类中的方法可以对占位符进行赋值,下面会讲到。
-
获取预编译对象
-
填写占位符数据
通过PrepardStatement对象中的setXXX(index,value)方法给占位符赋值。
-
执行sql语句
查询语句用:executeQuery()
增删改语句用:executeUpdate()
-
处理返回结果
处理查询返回的结果集:
处理增删改返回的结果集:
如果返回值大于0,则表示数据增删改成功,反之,则表示失败。System.out.println(rs > 0? "成功":"失败");
-
关闭资源
以上8个步骤就是JDBC的基本使用。
牛刀小试一下(动手)
目标:
- 增加班级
- 删除班级
- 修改班级
- 根据班级查询学生。
- 查询所有学生
- 根据学号查询学生
- 根据姓名和年龄范围查询学生
- 添加学生
- 修改学生
- 根据学号删除学生
班级表sql代码
create table classes
(
id varchar(50) primary key,
cname varchar(50) not null,
info varchar(50) not null
);
学生表sql代码
create table if not exists student(
stuNo varchar(50)primary key,
name varchar(50) not null,
age int,
sex enum('男','女','保密'),
status char(1) default '0',
cid varchar(50),
foreign key(cid) references classes(id)
);
步骤:
- 创建相关表(这个会吧,这里就不演示了)
- 创建表的实体类(根据字段创建属性)
- 创建工具类和相关配置文件
- 创建Dao接口和接口实现类
- 创建Service接口和接口实现类
- 测试
最后具体代码看附件。代码是我自己写的,并不是标准答案,每个人想法不同写法也不同,所以我的代码你们可以借鉴,但不必完全一样。