JDBC中三个重要接口

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: 这里介绍一下JDBC API中最重要的三个接口:Connection、Statement和ResultSet。

一、Connection接口


java.sql.Connection接口的实现对象代表与数据库的连接,也就是在Java程序和数据库之间建立连接。Connection接口中常用的方法:


Statement createStatement():创建一个语句对象,语句对象用来将SQL语句发送到数据 库。

PreparedStatement prepareStatement(String sql):创建一个预编译的语句对象,用来将参数 化的SQL语句发送到数据库,参数包含一个或者多个问号“?”占位符。

CallableStatement prepareCall(String sql):创建一个调用存储过程的语句对象,参数是调用 的存储过程,参数包含一个或者多个问号“?”为占位符。

close():关闭到数据库的连接,在使用完连接后必须关闭,否则连接会保持一段比较长的 时间,直到超时。

isClosed():判断连接是否已经关闭。


二、Statement接口


java.sql.Statement称为语句对象,它提供用于向数据库发出SQL语句,并且访问结果。


有三种Statement接口::java.sql.Statement、java.sql.PreparedStatement和 java.sql.CallableStatement


PreparedStatement继承Statement接口,CallableStatement继承 PreparedStatement接口。

Statement实现对象用于执行基本的SQL语句,PreparedStatement实现对 象用于执行预编译的SQL语句,CallableStatement实现对象用于用来调用数据库中的存储过程。


Statement提供了许多方法,最常用的方法如下:


executeQuery():运行查询语句,返回ResultSet对象。

executeUpdate():运行更新操作,返回更新的行数。

close():关闭语句对象。

isClosed():判断语句对象是否已经关闭。

Statement对象用于执行不带参数的简单SQL语句,语法格式如下:

Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/JAVA",“user”,"password");
Statement stmt = conn.createStatement();
ResultSet rst = stmt.executeQuery("select userid, name from user");

一般情况下可以通过connection.createStatement()方 法就可以得到Statement对象。

PreparedStatement对象用于执行带参数的预编译SQL语句,语法格式如下:

Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/JAVA",“user”,"password");
PreparedStatement pstmt = conn.prepareStatement("insert into user values(?,?)");
pstmt.setInt(1,10); //绑定第一个参数 
pstmt.setString(2,"guan"); //绑定第二个参数 
//执行SQL语句
pstmt.executeUpdate(); 

绑定参数时需要注意两个问题:绑定参数顺序和绑定参数的类型,绑定参数索引是 从1开始的,而不是从0开始的。根据绑定参数的类型不同选择对应的set方法。

CallableStatement对象用于执行对数据库已存储过程的调用,语法格式如下:

Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/JAVA",“user”,"password");
strSQL = "{call proc_userinfo(?,?)}";
java.sql.CallableStatement sqlStmt = conn.prepaleCall(strSQL); sqlStmt.setString(1,"tony"); sqIStmt.setString(2,"tom"); 
//执行存储过程 
int i = sqlStmt.exeCuteUpdate();

分析预编译SQL语句的优点:预编译SQL语句是在程序编译的时一起进行编译,这样的语句在数据库中执行时 候,不需要编译过程,直接执行SQL语句,所以速度很快。在预编译SQL语句会有一些程 序执行时才能确定的参数,这些参数采用“?”占位符,直到运行时再用实际参数替换。


三、ResultSet接口


在Statement执行SQL语句时,如果是SELET语句会返回结果集,结果集通过接口 java.sql.ResultSet描述的,它提供了逐行访问结果集的方法,通过该方法能够访问结果集中不同 字段的内容。

ResultSet最常用的方法介绍如下:


close():关闭结果集对象。

isClosed():判断结果集对象是否已经关闭。

next():将结果集的光标从当前位置向后移一行。

getString():获得在数据库里是CHAR 或 VARCHAR等字符串类型的数据,返回值类型是 String。

getFloat():获得在数据库里是浮点类型的数据,返回值类型是float。

getDouble():获得在数据库里是浮点类型的数据,返回值类型是double。

getDate():获得在数据库里是日期类型的数据,返回值类型是java.sql.Date

getBoolean():获得在数据库里是布尔数据的类型,返回值类型是boolean。

getBlob():获得在数据库里是Blob(二进制大型对象)类型的数据,返回值类型是Blob类 型。

getClob():获得在数据库里是Clob(字符串大型对象)类型的数据,返回值类型是Clob。

这些方法要求有列名或者列索引,如getString()方法的两种情况:

public String getString(int columnlndex) throws SQLException 
//可以填列名也可以填列索引
public String getString(String columnName) throws SQLException

注意:columnlndex列索引是从1开始的,而不是从0开始的。这个顺序与select语句有关,如 果select使用*返回所有字段,如select * from user语句,那么列索引是数据表中字段的顺 序;如果select指定具体字段,如select userid, name from user或select name,userid from user, 那么列索引是select指定字段的顺序。


ResultSet示例代码如下:

import java.io.IOException;
import java.io.InputStream;
import java.sql.*;
import java.util.Properties;
/**
 * @author : 蔡政洁
 * @email :caizhengjie888@icloud.com
 * @date : 2020/3/2
 * @time : 1:04 下午
 */
public class HelloWorld {
    public static void main(String[] args) {
//        加载驱动程序
        try {
            Class.forName("com.mysql.cj.jdbc.Driver");
            System.out.println("驱动程序加载成功");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
            System.out.println("驱动程序加载失败");
            return;
        }
        String url = "jdbc:mysql://localhost:3306/JAVA";
        Properties info = new Properties();
        try {
//            获得config.properties配置文件的输入流对象,需要自己创建在src文件里
            InputStream inputStream = 数据库编程.建立数据库连接.HelloWorld.class.getClassLoader().getResourceAsStream("config.properties");
//            从流中加载信息到properties对象中
            info.load(inputStream);
        } catch (IOException e) {
            e.printStackTrace();
            return;
        }
//这里采用自动资源管理系统
        try (Connection conn = DriverManager.getConnection(url,info);
             Statement stmt = conn.createStatement();
             ResultSet rst = stmt.executeQuery("select * from xinxi_tb")
        ){
            System.out.println("数据库连接成功"+conn);
            while (rst.next()){
//                这里指列的索引,查找的列,从1开始索引
                System.out.printf("id:%d ,name:%s, age:%d\n", rst.getInt(1),rst.getString("name"),rst.getInt(3));
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

config.properties文件:

user=root
password=199911
useSSL=false
verifyServerCertificate=false

运行结果:

驱动程序加载成功
数据库连接成功com.mysql.cj.jdbc.ConnectionImpl@7ca48474
id:1 ,name:aaa, age:21
id:2 ,name:bbb, age:32
id:4 ,name:ccc, age:43
id:5 ,name:ddd, age:56
id:6 ,name:eee, age:49




相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
6月前
|
SQL 存储 Java
JDBC Statement:执行 SQL 语句的重要接口
在Java应用程序中,与数据库进行交互是一项常见的任务。为了执行数据库操作,我们需要使用JDBC(Java Database Connectivity)来建立与数据库的连接并执行SQL语句。Statement接口是JDBC中的一个重要接口,它用于执行SQL语句并与数据库进行交互。本文将详细介绍Statement接口的使用,包括如何创建Statement对象、执行SQL语句、处理结果等内容。
107 0
|
7月前
|
SQL Java 数据库连接
jdbc应用开发接口流程是怎么样的
jdbc应用开发接口流程是怎么样的
|
8月前
|
SQL Java 关系型数据库
JDBC(常用类与接口、实现数据库的增删查改)
1.Connection接口常用方法、2.DriverMange类、3.Statement接口,4.实现表的数据更新(增、改、删),5.实现数据查找(ResultSet接口),6.PreparedStatement 数据更新
100 0
JDBC(常用类与接口、实现数据库的增删查改)
|
8月前
|
SQL Java 大数据
关于数据仓库的Hive的Hive架构的用户接口的JDBC/ODBC
随着大数据技术的不断发展,数据仓库成为了企业中不可或缺的一部分。而Hive作为一种开源的数据仓库系统,因其易于使用和高效处理等特点,成为了许多企业的首选。然而,对于普通用户来说,直接使用Hive的命令行工具进行操作并不方便。因此,开发者社区中涌现出了大量的Hive GUI工具,其中最为流行的就是Web GUI工具。
197 1
|
11月前
|
SQL Java 关系型数据库
JDBC驱动接口
JDBC驱动接口
95 0
|
Java
oushudb-编程接口 - -JDBC-编译与运行
oushudb-编程接口 - -JDBC-编译与运行
55 0
|
SQL Java 数据库
oushudb-编程接口 - JDBC-执行语句
oushudb-编程接口 - JDBC-执行语句
51 0
|
Java 数据库连接 数据库
OushuDB-编程接口 - JDBC-获取连接
OushuDB-编程接口 - JDBC-获取连接
52 0
|
SQL Java 数据库连接
OushuDB-编程接口 - JDBC
OushuDB-编程接口 - JDBC
40 0
|
SQL Java 关系型数据库
JavaApi高级编程(六)JDBC主要接口以及数据库连接的操作步骤
JavaApi高级编程(六)JDBC主要接口以及数据库连接的操作步骤
JavaApi高级编程(六)JDBC主要接口以及数据库连接的操作步骤