JDBC数据库连接 及JDBC使用讲解

目录

1. 什么是JDBC

2. JDBC ⼯作原理

3. JDBC 使⽤

3.1 创建项目并添加MySQL驱动(DataSource实现操作数据库)

3.2 使用代码操作数据库


1. 什么是JDBC

Java 数据库连接。是⼀种⽤于执⾏ SQL 语句的 Java API,它是 Java 中的数据库连接规范。 使⽤了 JDBC 之后,不管是什么数据库与什么数据库驱动,我们只需要使⽤⼀套标准代码就 可以实现对不同数据库进⾏统⼀操作(添加、修改、删除、查询),它的目的就在于解决不同数据库厂商的数据库存在不一样时,会产生的问题。

2. JDBC ⼯作原理

JDBC 为多种关系数据库提供了统⼀访问⽅式,作为特定⼚商数据库访问 API 的⼀种⾼级抽象,
它主要包含⼀些通⽤的接⼝类。
JDBC 访问数据库层次结构:

JDBC的优点:1. Java语言访问数据库操作完全面向抽象接口编程。

                        2. 开发数据库应用不用限定在特定数据库厂商的API。

                        3. 程序的可移植性大大增强。 

3. JDBC 使⽤

3.1 创建项目并添加MySQL驱动(DataSource实现操作数据库)

        创建Java项目,添加MySQL驱动(注意:不同数据库版本对应不同驱动包)

3.2 使用代码操作数据库

        操作数据库MySQL提供两种操作API:

        1. DirverManager

        2. DataSource(推荐使用)

下面是使用DataSource来实现操作数据库:

        1. 获取数据源   (输入MySQL数据库连接的服务器地址、用户名、密码)

        2. 获取连接  (建立客户端与服务端的连接)

        3. 获取执行器  (连接服务器并切换到数据库)

        4. 查询或操作数据库  (输入命令,并得到结果)

        5. 关闭连接  (关闭客户端)

3.2.1 获取数据源

// 1. 创建数据源
MysqlDataSource dataSource = new MysqlDataSource();
// 1.1 设置连接的 MySQL 数据库服务器
dataSource.setURL("jdbc:mysql://127.0.0.1:3306/java33characterEncoding=utf8&useSSL=true");
// 1.2 设置⽤户名
dataSource.setUser("root");
// 1.3 设置密码
dataSource.setPassword("********");

 3.2.2  获得连接

连接对象是 Connection,注意此步骤操作容易出错,⼀定是 com.mysql.jdbc 包下的 Connection 对象。
// 2.创建连接
Connection connection = (Connection) dataSource.getConnection();

3.2.3 获得执行器

执⾏器是⽤来执⾏ SQL 命令的,执⾏器有三种:
        1. Statement (用于执行不带参数的简单语句)
        2. PreparedStatement (用于执行带或者不带参数的语句,SQL语句会在数据库系统预编译,执行速度快于Statement)(常用)
        3. CallableStatement (用于执行数据库存储过程的调用)
PreparedStatement 优点:
        性能比 Statement高,SQL预编译,阻止常见SQL注入攻击,占位符“ ?”下标从1开始,占位符不能用多值,参数化SQL查询。
// 3.获得执⾏器
String selectSQL = "select * from student where user name = ?";
PreparedStatement statement = connection.prepareStatement(selectSQL);
// 3.1 占位符赋值
statement.setString(1, "王五");
 
PreparedStatement 有 主要两种重要的⽅法:
        1. executeQuery();  ⽅法执⾏后返回单个结果集的,通常⽤于 select 语句。
        2. executeUpdate():⽅法返回值是⼀个整数,指示受影响的⾏数,通常⽤于 update、insert、delete 语句。
3.2.4 查询或操作数据库
// 4.获得结果集
ResultSet resultSet = statement.executeQuery();
// 4.1 获得结果并打印
while (resultSet.next()) {
    String sn = resultSet.getString("sn");
    String username = resultSet.getString("username");
    String mail = resultSet.getString("mail");
    System.out.println(String.format("SN:%s,UserName:%s,Mail:%s", sn,username, mail));
}
ResultSet ⾥的数据⼀⾏⼀⾏排列,每⾏有多个字段,并且有⼀个记录指针,指针所指的数据⾏
叫做当前数据⾏,我们只能来操作当前的数据⾏。我们如果想要取得某⼀条记录,就要使⽤
ResultSet 的 next() ⽅法 ,如果我们想要得到 ResultSet ⾥的所有记录,就应该使⽤ while 循环。
3.2.5 关闭数据库连接
  // 5. 关闭资源
        resultSet.close();
        statement.close();
        connection.close();

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值