JDBC中的元数据——3.结果集元数据
package metadata;
import java.sql.Connection;
import java.sql.ParameterMetaData;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.util.List;
import javax.sql.DataSource;
import com.mchange.v2.c3p0.ComboPooledDataSource;
import entity.Student;
import util.SQLUtil;
/**
* 结果集元数据:
* @author mzy
*
*/
public class Demo03 {
private static DataSource ds = new ComboPooledDataSource();
public static void main(String[] args) throws Exception {
// easyUse();
// 补充完SQLUtil中的Query方法
List<Student> list = SQLUtil.query("select * from student", null, Student.class);
for(Student student : list) {
System.out.println(student);
}
}
private static void easyUse() throws Exception {
Connection conn = ds.getConnection();
String sql = "select * from student";
PreparedStatement stmt = conn.prepareStatement(sql);
/*
* 获取参数元数据:
* 目的是取得我们需要赋值的参数数量;
* 例如如如果我们的查询中有where条件!
*/
ParameterMetaData param = stmt.getParameterMetaData();
int count = param.getParameterCount();
Object[] values = null;
System.out.println(count);
/* // 因为恒无法进入,所以注释掉
if(values != null) { // 当传入的values为空,说明不需要参数
// 有需要赋值的参数的时才进行if中的操作
for(int i=0; i<count; i++) {
stmt.setObject(i+1, values[i]);
}
}
*/
ResultSet rs = stmt.executeQuery();
/*
while(rs.next()) {
// 原来的办法,手动的取出每一行中的数据
int id = rs.getInt(1);
String name = rs.getString(2);
System.out.println(id+"\t"+name);
}
*/
// 这里的while中从结果集中取得元素的时候
// 程序并不知道没一行有几个元素
// 所以这里需要结果集元数据,就可以知道一共有几列了
ResultSetMetaData metaData = rs.getMetaData();
int col = metaData.getColumnCount();
while(rs.next()) {
// 遍历每列
for(int i=1; i<=col; i++) {
Object value = rs.getObject(i);
System.out.print(value+"\t");
}
System.out.println();
}
conn.close();
}
}
其中部分已经封装到了SQLUtil中,请点击
JDBC中的元数据——3.结果集元数据的更多相关文章
- OpenJDK源码研究笔记(十二):JDBC中的元数据,数据库元数据(DatabaseMetaData),参数元数据(ParameterMetaData),结果集元数据(ResultSetMetaDa
元数据最本质.最抽象的定义为:data about data (关于数据的数据).它是一种广泛存在的现象,在许多领域有其具体的定义和应用. JDBC中的元数据,有数据库元数据(DatabaseMeta ...
- oracle学习笔记(八)——结果集元数据ResultSetMetaData以及ResultSet转为对应的实体类框架
介绍 可用于获取关于 ResultSet 对象中列的类型和属性信息的对象,在持久框层框架(如:mybatis, hibernate)中被广泛的应用. 常用方法 int getColumnCount() ...
- JDBC第三篇--【事务、元数据、改造JDBC工具类】
这是我JDBC的第一篇 http://blog.csdn.net/hon_3y/article/details/53535798 这是我JDBC的第二篇 http://blog.csdn.net/ho ...
- 获取jdbc中resultSet结果集的大小
当我们执行完一条Sql语句,获取到一个 ResultSet 对象后,有时我们需要立即知道到底返回了多少个元素,但是 ResultSet 并没有提供一个 size() 方法 or length 的属性, ...
- JDBC中常用对象介绍
JDBC中的主要类(接口) 在JDBC中常用的类有: 1.DriverManager 2.Connection 3.Statement 4.ResultSet 1.DriverManager 其实我们 ...
- MVC3.0学习笔记之元模型元数据ModelMetaData以及模型元数据提供系统
模型元数据ModelMetaData是MVC中很重要的概念,它包括但不仅限于 模型的类型,模型包含了哪些属性,属性都是什么类型的,属性上都有什么特性. ASP.NET MVC3.0 提供了默认的模型元 ...
- JDBC中的Statement和PreparedStatement的区别
JDBC中的Statement和PreparedStatement的区别
- [转]JDBC中日期时间的处理技巧
Java中用类java.util.Date对日期/时间做了封装,此类提供了对年.月.日.时.分.秒.毫秒以及时区的控制方法,同时也提供一些工具方法,比如日期/时间的比较,前后判断等. java.uti ...
- JDBC中的事务-Transaction
事务-Transaction 某些情况下我们希望对数据库的某一操作要么整体成功,要么整体失败,经典的例子就是支付宝提现.例如我们发起了支付宝到银行卡的100元提现申请,我们希望的结果是支付宝余额减少1 ...
随机推荐
- Unittest方法 -- 测试固件(TestFixture)
前置和后置 1.setUp:在写测试用例的时候,每次操作其实都是基于打开浏览器输入对应网址这些操作,这个就是执行用例的前置条件.2.tearDown:执行完用例后,为了不影响下一次用例的执行,一般有个 ...
- DNS服务器安全---通过ipset对DNS异常解析流量的源IP地址进行管控
ipset介绍 ipset是iptables的扩展,它允许你创建 匹配整个地址集合的规则.而不像普通的iptables链只能单IP匹配, ip集合存储在带索引的数据结构中,这种结构即时集合比较大也可以 ...
- 警告: Runner org.junit.internal.runners.ErrorReportingRunner (used on class cn.star.MybatisTest)
bug描述: 在Springboot整合Junit的时候编写测试类进行测试时, 出现以下错误: 十一月 28, 2019 2:53:48 下午 org.junit.vintage.engine.des ...
- SpringBoot下Schdule的配置与使用
我们在平常项目开发中,经常会用到周期性定时任务,这个时候使用定时任务就能很方便的实现.在SpringBoot中用得最多的就是Schedule. 一.SpringBoot集成Schedule 1.依赖配 ...
- PHP 后台数组数据 传输给前台JS 使用
一. PHP: $a = array('aaa','bbb'); $a= json_encode($a); JS: var a_json = {$a}; //此处a_json数组便可使用 二. H ...
- 手写Pascal解释器(二)
目录 一.part4 补充理论知识 二.part5 设计生成式 三.part6 一.part4 承接上次的内容,我们继续编写part4,这个部分我们的任务是完成输入一个仅带乘除运算符的表达式,然后返回 ...
- 模拟input type=file
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- JavaScript关于返回数据类型一个小小的笔记
Javascript关于返回数据类型的一个小笔记 javascript数据类型有两种. 一种是基本数据类型:String.Number.Boolean.Symbol.Underfine.Null 一种 ...
- 四、C#简单操作MinIO
MinIO的官方网站非常详细,以下只是本人学习过程的整理 一.MinIO的基本概念 二.Windows安装与简单使用MinIO 三.Linux部署MinIO分布式集群 四.C#简单操作MinIO He ...
- Redis-缓存穿透/击穿/雪崩
1. 简介 如图所示,一个正常的请求 客户端请求张铁牛的博客. 服务首先会请求redis,查看请求的内容是否存在. redis将请求结果返回给服务,如果返回的结果有数据则执行7:如果没有数据则会继续往 ...