原理:

ResultSet:结果集合,封装了使用JDBC进行查询的结果
     1. 调用Statement对象的
     2. ResultSet返回的实际就是一张数据表,有一个指针指向数据表的第一行的前面,可以调用next()方法检测下一行是否有效
     若有效该方法返回true,且指针下移,相当于Iterator对象的hasNext()和next()方法的结合体
     3. 当指针定位到一行时,可以调用getXXX(index)或者getXXX(columName)获取每一列的值,
     4. ResultSet当然也需要关闭。

package com.atguigu.jdbc;import java.beans.Statement;
import java.io.Closeable;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Date;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Properties;
import org.junit.Test;
import com.mysql.jdbc.Connection;
import com.mysql.jdbc.Driver;public class JDBCSelect {/*** ResultSet:结果集合,封装了使用JDBC进行查询的结果* 1. 调用Statement对象的* 2. ResultSet返回的实际就是一张数据表,有一个指针指向数据表的第一行的前面,可以调用next()方法检测下一行是否有效* 若有效该方法返回true,且指针下移,相当于Iterator对象的hasNext()和next()方法的结合体* 3. 当指针定位到一行时,可以调用getXXX(index)或者getXXX(columName)获取每一列的值,* 4. ResultSet当然也需要关闭。* @throws SQLException * @throws IOException * @throws ClassNotFoundException */@Testpublic void testResultSet() throws SQLException, ClassNotFoundException, IOException {//获取customers数据表的记录,并打印Connection conn = null;java.sql.Statement statement = null;ResultSet rs = null;try {//1. 获取Connectionconn = JDBCTools.getConnection();//2. 获取Statementstatement = conn.createStatement();//3. 准备SQLString sql = "SELECT * FROM customers";//4. 执行查询,得到ResultSetrs =  ((java.sql.Statement) statement).executeQuery(sql);//5. 处理ResultSetwhile(rs.next()) {int id = rs.getInt(1);String name = rs.getString(2);String email = rs.getString(3);Date birth = rs.getDate(4);System.out.println(id);System.out.println(name);System.out.println(email);System.out.println(birth);System.out.println();}} catch (Exception e) {e.printStackTrace();} finally {//6. 关闭数据库资源JDBCTools.release(rs, statement, conn);}}
}

JDBCTools工具类也提供给大家吧:

package com.atguigu.jdbc;import java.beans.Statement;
import java.io.Closeable;
import java.io.IOException;
import java.io.InputStream;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Properties;import com.mysql.jdbc.Connection;
/*** 手写操作JDBC的工具类,封装了一些工具方法* Version 1*/
public class JDBCTools {/*** 1. 获取连接的方法* 通过读取配置文件从数据库服务器获取一个连接* @return* @throws Exception*/public static Connection getConnection() throws IOException, ClassNotFoundException, SQLException {//1.准备连接数据库的4个字符串//1).创建Properties对象Properties properties = new Properties();//2).获取jdbc.properties对应的输入流InputStream in = JDBCTools.class.getClassLoader().getResourceAsStream("jdbc.properties");//3).加载2)对应的输入流properties.load(in);//4)具体决定user,password等4个字符串String user = properties.getProperty("user");String password = properties.getProperty("password");String jdbcUrl = properties.getProperty("jdbcUrl");String driver = properties.getProperty("driver");//2.加载数据库驱动程序(对应Driver 实现类中有注册驱动的静态代码块)Class.forName(driver);//3.通过DriverManager的getConnection()方法获取数据库连接return (Connection) DriverManager.getConnection(jdbcUrl, user, password);}/*** 关闭Statement和Connection* @param statement* @param conn*/public static void release(ResultSet rs, java.sql.Statement statement, Connection conn) {//关闭ResultSet对象if(rs != null) {try {rs.close();} catch (SQLException e) {e.printStackTrace();}}//关闭Statement对象if(statement != null) {try {statement.close();} catch (Exception e) {e.printStackTrace();}}//关闭conn对象if(conn != null) {try {conn.close();} catch (Exception e) {e.printStackTrace();}}    }
}

查询结果:

JDBC通过Statement执行查询操作相关推荐

  1. java resultset查询_Java -- JDBC 学习--通过 ResultSet 执行查询操作

    voidtestResultSet(){//获取 id=4 的 customers 数据表的记录, 并打印 Connection conn= null; Statement statement= nu ...

  2. java数据库编程——执行查询操作(二)

    [0]README 1) 本文部分文字描述和source code 均转自 core java volume 2 , 旨在理解 java数据库编程--执行查询操作(二) 的基础知识 : 2) 本文和 ...

  3. java数据库编程——执行查询操作(一)

    [0]README 1) 本文部分文字描述和source code 均转自 core java volume 2 , 旨在理解 java数据库编程--执行查询操作 的基础知识 : 2) 本文和 jav ...

  4. java数据库edit_Java数据库连接——JDBC基础知识(操作数据库:增删改查)

    一.JDBC简介 JDBC是连接java应用程序和数据库之间的桥梁. 什么是JDBC? Java语言访问数据库的一种规范,是一套API. JDBC (Java Database Connectivit ...

  5. java jdbc程序,Java构建JDBC应用程序的操作

    我们在学习接口的时候.能够在里面做一些方法的调用.不过今天所要讲的JDBC,虽然也是连接数据库的一种接口,不过与类接口有着很大的区别,大家要注意区分.下面我们就构建JDBC的步骤进行了整理,还不会此类 ...

  6. 20190602:JDBC的增删改操作实践

    实现JDBC的增删改操作 JDBC的增删改操作 测试 JDBC的增删改操作 首先紧接昨天的JDBC的第一个程序,进行简单的修改即可做到增删改操作: public void insert_test() ...

  7. 小博老师解析Java核心技术 ——JDBC普通增删改操作

    [引言] 我们在学习Java编程时,连接数据库技术(JDBC)是一项必备技能,我们经常需要读取或操作持久性存储的结构化数据.那么现在开始,小博老师就开始为大家讲解JDBC中的常用操作技术,今天我们来了 ...

  8. Jdbc连接数据库做删除操作

    Jdbc连接数据库做删除操作 package jdbc;import java.sql.Connection; import java.sql.DriverManager; import java.s ...

  9. 关于jdbc中Statement

    关于jdbc中Statement 一. PreparedStatement 接口继承 Statement , PreparedStatement 实例包含已编译的 SQL 语句:Statement每次 ...

最新文章

  1. 流行学习、流形学习家族、局部线性嵌入LLE、随机投影(Random Projection)、t-SNE降维及可视化
  2. 1.2 初窥输入输出、控制语句
  3. ssm 异常捕获 统一处理_统一异常处理介绍及实战
  4. android主题编辑器,使用 Theme Editor 设计应用主题背景
  5. OceanBase开源,11张图带你了解分布式数据库的核心知识
  6. python包/模块路径
  7. 不变子空间与线性变换的矩阵之间的关系
  8. Java、python实现啊哈算法 —— chapter3 枚举 炸弹人
  9. 语文学科html代码,语文教育专业介绍 [代码660201]
  10. HKC PG27P3评测 HKC PG27P3怎么样
  11. nexus5 博通芯片WIFI详解 (3)
  12. 高级货!Django实现基于人脸识别的门禁管理系统【源码】
  13. android 各个版本安全特性
  14. 中科蓝讯 AB32VG1 开发板 GPIO 控制RGB彩灯实验
  15. 星药科技李成涛:人工智能在药物研发中的应用
  16. 铁甲雄兵显示服务器维护,铁甲雄兵正在获取服务器地址
  17. ARM发布 Cortex-M35P保护物联网智能连接
  18. 2023 Mycode码支付系统PHP源码
  19. 安装过千月(BlueSoleil)蓝牙软件后,网络图标上就一直显示红叉,但却能上网
  20. 台电 x80 pro 双系统 刷win10最新家庭版

热门文章

  1. QT-----无人机地面站如何修改显示界面1——OpenPilotGCS_config.xml
  2. 自考学习总结之管理经济学
  3. Java 第一章.基本语法
  4. 纪念金庸。创造了整整一个江湖。一个江湖的时代落幕了。。。
  5. Openblas 下载和使用方法
  6. 时序预测构建ARIMA模型时报错:NotImplementedError: statsmodels.tsa.arima_model.ARMA and statsmodels.tsa.arima_
  7. leetcode 617. 合并二叉树 python
  8. Duplicate Entry
  9. 纷享销客对话真趣科技丨撬动一家物联网企业的增长极限
  10. android 双屏apk,双屏可折叠 通吃.exe和.apk 微软终于发大招了!