您当前的位置: 首页 > 

liaowenxiong

暂无认证

  • 1浏览

    0关注

    1171博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

JDBC的基本使用

liaowenxiong 发布时间:2021-11-17 16:35:43 ,浏览量:1

文章目录
  • 概念
  • 基本使用步骤
  • 详解各个对象
    • DriverManager
      • 注册驱动
      • 获取数据库连接
    • Connection
      • 获取执行 SQL 语句的对象
      • 事务管理
    • Statement
      • 执行 SQL 语句
    • ResultSet
    • Preparedstatement

概念

Java DataBase Connectivity Java 数据库连接,即使用 Java 语言操作数据库

JDBC本质: 其实是官方(sun公司) 定义的一套操作所有关系型数据库的规则,即接口。各个数据库厂商去写实现类来实现这套接口,并将这些实现类打成 jar 包,称之为数据库驱动包。我们可以使用这套接口(JDBC) 编程,而真正执行的代码是数据库驱动 jar 包中的实现类。

基本使用步骤
 // 1.注册驱动,即将驱动类加载进内存中
Class.forName("com.mysql.jdbc.Driver");
// 2.获取数据库连接对象
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "root");
// 3.定义SQL语句
String sql = "update account set balance = 500 where id = 1";
// 4.获取执行SQL的对象Statement
Statement stmt = conn.createStatement();
// 5.执行SQL语句
int i = stmt.executeUpdate(sql);
// 6.处理结果
System.out.println(i);
// 7.释放资源
stmt.close();
conn.close();
详解各个对象 DriverManager

驱动管理对象,主要功能用来注册驱动、获取数据库连接。

注册驱动

注册驱动就是告诉程序使用哪个数据库驱动包。

注册驱动时,我们写的代码为:

Class.forName("com.mysql.jdbc.Driver");

但是类 Driver 中存在一个静态代码块为:

static {
        try {
            DriverManager.registerDriver(new Driver());
        } catch (SQLException var1) {
            throw new RuntimeException("Can't register driver!");
        }
    }

所以实际上是调用类 DriverManager 的静态方法 registerDriver 注册驱动的。

在 MySQL 5.0 版本之后,可以不必手动注册驱动包,因为 MySQL JDBC 驱动 JAR 包里面有一个配置文件,如果没有注册驱动包,会自动读取该文件,然后自动完成注册: 在这里插入图片描述

获取数据库连接
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "123456");

其中 URL 的语法格式:jdbc:mysql://ip地址(域名):端口号/数据库名称,访问本地数据库可以简写为:jdbc:mysql:///数据库名称,即其中的localhost:3306 可以省略掉。

Connection

数据库连接对象。

获取执行 SQL 语句的对象
Statement createStatement()
PreparedStatement prepareStatement(String sql)
事务管理

设置是否自动提交事务:void setAutoCommit​(boolean autoCommit) 提交事务:void commit() 回滚事务:rollback()

Statement

用于执行静态 SQL 语句并返回它所生成结果的对象

执行 SQL 语句

int executeUpdate(String sql):执行 DML 语句(即 insert、update、delete 等语句),DDL 语句(create、drop、alter)。 返回值是指影响的行数。大于0表示执行成功,否则执行失败。

ResultSet executeQuery(String sql):执行 DQL 语句。

ResultSet

结果集对象,用来封装查询结果 next():游标向下移动一行,并且判断当前行是否结果集最后一行的后面,如果不是返回 true,是则返回 false getXxx(参数):获取数据,其中参数可以是整数类型的 columnIndex,表示列的编号,从 1 开始,也可以是字符串类型的 columnLabel,表示列的名称。 例如,int getInt(1)、String getString(“name”)

扩展知识: 迭代器使用 hasNext() 和 next() 来迭代遍历数据

Preparedstatement

表示预编译的 SQL 语句的对象。SQL 语句被预编译并存储在 PreparedStatement 对象中。然后可以使用此对象多次高效地执行该语句。

预编译的 SQL 语句中的参数使用问号(?)作为占位符,然后通过调用方法给这些占位符赋值,从而构建完整的 SQL 语句。

Preparedstatement 对象可以解决 SQL 语句注入的问题,更加安全,且效率更好。

参考范例:

// 定义sql语句
String sql = "select * from user where account_name = ? and password = ?";
// 获取语句执行对象
pstmt = conn.prepareStatement(sql);
// 给预编译的sql语句参数赋值
pstmt.setString(1, accountName);
pstmt.setString(2, password);
// 执行sql语句
rs = pstmt.executeQuery();

步骤: 1.导入驱动jar包:mysql -connector- java-5.1.37-bin.jar 2.注册驱动 3.获取数据库连接对象Connection 4.定义sql 注意: sql的参数使用?作为占位符。 如: select * from user where account_name = ? and password = ? 5.获取执行sql语句的对象

Preparedstatement conn.prepareStatement(String sql)

6.给?赋值: 方法: setxxx(参数1 , 参数2) 参数1:?的位置编号从1开始 参数2:?的值 7.执行sql,接收返回结果,不需要传递sql语句 8.处理结果 9.释放资源

关注
打赏
1661566967
查看更多评论
立即登录/注册

微信扫码登录

0.0415s