JDBC通过Statement执行查询操作
原理:
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执行查询操作相关推荐
- java resultset查询_Java -- JDBC 学习--通过 ResultSet 执行查询操作
voidtestResultSet(){//获取 id=4 的 customers 数据表的记录, 并打印 Connection conn= null; Statement statement= nu ...
- java数据库编程——执行查询操作(二)
[0]README 1) 本文部分文字描述和source code 均转自 core java volume 2 , 旨在理解 java数据库编程--执行查询操作(二) 的基础知识 : 2) 本文和 ...
- java数据库编程——执行查询操作(一)
[0]README 1) 本文部分文字描述和source code 均转自 core java volume 2 , 旨在理解 java数据库编程--执行查询操作 的基础知识 : 2) 本文和 jav ...
- java数据库edit_Java数据库连接——JDBC基础知识(操作数据库:增删改查)
一.JDBC简介 JDBC是连接java应用程序和数据库之间的桥梁. 什么是JDBC? Java语言访问数据库的一种规范,是一套API. JDBC (Java Database Connectivit ...
- java jdbc程序,Java构建JDBC应用程序的操作
我们在学习接口的时候.能够在里面做一些方法的调用.不过今天所要讲的JDBC,虽然也是连接数据库的一种接口,不过与类接口有着很大的区别,大家要注意区分.下面我们就构建JDBC的步骤进行了整理,还不会此类 ...
- 20190602:JDBC的增删改操作实践
实现JDBC的增删改操作 JDBC的增删改操作 测试 JDBC的增删改操作 首先紧接昨天的JDBC的第一个程序,进行简单的修改即可做到增删改操作: public void insert_test() ...
- 小博老师解析Java核心技术 ——JDBC普通增删改操作
[引言] 我们在学习Java编程时,连接数据库技术(JDBC)是一项必备技能,我们经常需要读取或操作持久性存储的结构化数据.那么现在开始,小博老师就开始为大家讲解JDBC中的常用操作技术,今天我们来了 ...
- Jdbc连接数据库做删除操作
Jdbc连接数据库做删除操作 package jdbc;import java.sql.Connection; import java.sql.DriverManager; import java.s ...
- 关于jdbc中Statement
关于jdbc中Statement 一. PreparedStatement 接口继承 Statement , PreparedStatement 实例包含已编译的 SQL 语句:Statement每次 ...
最新文章
- 流行学习、流形学习家族、局部线性嵌入LLE、随机投影(Random Projection)、t-SNE降维及可视化
- 1.2 初窥输入输出、控制语句
- ssm 异常捕获 统一处理_统一异常处理介绍及实战
- android主题编辑器,使用 Theme Editor 设计应用主题背景
- OceanBase开源,11张图带你了解分布式数据库的核心知识
- python包/模块路径
- 不变子空间与线性变换的矩阵之间的关系
- Java、python实现啊哈算法 —— chapter3 枚举 炸弹人
- 语文学科html代码,语文教育专业介绍 [代码660201]
- HKC PG27P3评测 HKC PG27P3怎么样
- nexus5 博通芯片WIFI详解 (3)
- 高级货!Django实现基于人脸识别的门禁管理系统【源码】
- android 各个版本安全特性
- 中科蓝讯 AB32VG1 开发板 GPIO 控制RGB彩灯实验
- 星药科技李成涛:人工智能在药物研发中的应用
- 铁甲雄兵显示服务器维护,铁甲雄兵正在获取服务器地址
- ARM发布 Cortex-M35P保护物联网智能连接
- 2023 Mycode码支付系统PHP源码
- 安装过千月(BlueSoleil)蓝牙软件后,网络图标上就一直显示红叉,但却能上网
- 台电 x80 pro 双系统 刷win10最新家庭版
热门文章
- QT-----无人机地面站如何修改显示界面1——OpenPilotGCS_config.xml
- 自考学习总结之管理经济学
- Java 第一章.基本语法
- 纪念金庸。创造了整整一个江湖。一个江湖的时代落幕了。。。
- Openblas 下载和使用方法
- 时序预测构建ARIMA模型时报错:NotImplementedError: statsmodels.tsa.arima_model.ARMA and statsmodels.tsa.arima_
- leetcode 617. 合并二叉树 python
- Duplicate Entry
- 纷享销客对话真趣科技丨撬动一家物联网企业的增长极限
- android 双屏apk,双屏可折叠 通吃.exe和.apk 微软终于发大招了!