关于rs.next()问题

发布时间:2014-02-15 JAVA相关

rs.next(); -- 从查询出来的集合中拿出了一条数据

表示的集合表中的第一个对象。

如果说你在做数据库查询的时候,返回了一个Result结果集。只有一条数据是,常常很容易犯了这样的错误。

先对数据进行判断。

数据库中的数据:

如图:

这里有两条数据

//查询一条用户信息
	public User select(User t) {
		int in = 0;
		sql = "select * from blog_users where blogstate=? ";
		conn = DBconn.getConnection();
		try {
			ps = conn.prepareStatement(sql);
			System.out.println(t);
			ps.setInt(1, in);
			rs = ps.executeQuery();
//			if(rs.next()){//在这里进行判断集合中是否有数据存在...其实这里集合已经拿到集合中的第一条数据
			User user =null;
				while(rs.next()){//这里已经是第二条
					System.out.println(rs.getString("username"));
					user = new User();
					user.setUserid(rs.getInt("userid"));
					user.setUsername(rs.getString("username"));
					user.setPassword(rs.getString("password"));
					user.setEmail(rs.getString("email"));
					user.setNickname(rs.getString("nickname"));
					user.setBlogstate(rs.getInt("blogstate"));
					user.setUserstate(rs.getInt("userstate"));
					System.out.println("用户对象:"+user);	
				}
			return user;
//			}
		} catch (SQLException e) {
			System.out.println("查询用户"+t.getUsername()+"可能不存在!");
			e.printStackTrace();
		}finally{
//			DBconn.close(rs, stm, ps);
		}
		System.out.println("该对象不存在"+in);
		return null;
	}

User [blogstate=0, email=null, nickname=null, password=null, userid=0, username=yejin191258966, userstate=0]
yejin191258966
用户对象:User [blogstate=0, email=191258966@qq.com, nickname=灵嗅, password=aaaa, userid=1, username=yejin191258966, userstate=1]
yejin903207534
用户对象:User [blogstate=0, email=903207534@qq.com, nickname=空灵, password=bbbb, userid=2, username=yejin903207534, userstate=1]

很多时候,我们都会有一个习惯先去判断下;

因为rs.next()返回的是true 和false 如果集合中有数据返回的就是true

判断完成我们再去遍历

这样数据就会少点。从第二条数据开始遍历。当然,如果你当前查询的只是一条数据的话。那你遍历的结果始终都是null。

所以千万不要做这样的判断。我可能是之前对这个认识的不够,所以才犯了这样一个错误。




更多相关推荐


简单解释:字段规则required/optional/repeated+请求唯一性+表中参数带"+"+uint32

发布时间:2018-08-07 JAVA相关
1、请求的唯一性:防止别人重复使用请求参数,即对应请求只能使用一次,这样就算别人拿走了请求的完整链接也是无效的。实现方法:在请求参数中,加入时间戳:timestamp,时间戳作为请求参数之一,也进行加密。 2、表结构:参数加粗,加+号,注意这是结构体写法,而结构体又可以跟json互相转换即{"code":"","message":"","AuthData":{"access_token":"","...

Java如何获取进程ID

发布时间:2020-06-03 JAVA相关
项目中需要获取进程ID,查了一下,可以通过ManagementFactoryManagementFactory是一个在运行时管理和监控JavaVM的工厂类,它能提供很多管理VM的静态接口,比如RuntimeMXBean;可参考博客:https://blog.csdn.net/zgljl2012/article/details/50989976/RuntimeMXBean是Java虚拟机的运行时管理...

springboot:spring data jpa介绍

发布时间:2018-12-03 SPRING-DATA-JPA 数据库 JAVA相关 SPRINGBOOT
使用springdatajpa开发时,发现国内对springbootjpa全面介绍的文章比较少案例也比较零碎,因此写文章总结一下。本人也正在翻译SpringDataJPA参考指南,有兴趣的同学欢迎联系我,一起加入翻译中! springdatajpa介绍首先了解JPA是什么?JPA(JavaPersistenceAPI)是Sun官方提出的Java持久化规范。它为Java开发人员提供了一种对象/关联映...

java8中多线程异步调用方法CompletableFuture的特性及方法

发布时间:2019-03-30 JAVA相关 多线程
在java8以前,我们使用java的多线程编程,一般是通过Runnable中的run方法来完成,这种方式,有个很明显的缺点,就是,没有返回值,这时候,大家可能会去尝试使用Callable中的call方法,然后用Future返回结果,如下:使用CompletableFuture必须自己定义一个线程池,如果不定义就会用默认的线程池,数据量太大会导致调用失败的,使用者需要自己定义线程池publicsta...

Java 2 用户界面

发布时间:2006-01-06 API 图像处理 WINDOWS JAVA SWING 平台 JAVA相关
在Java2平台发行之前,抽象窗口工具包(AbstractWindowToolkit,AWT)是Java平台的图形功能的范围。例如Swing等各种技术都是作为可选的扩展被引入的。在Java2平台上,这些扩展中的大部分都可以在平台的核心中找到它们的一席之地,成为Java基础类(JavaFoundationClasses,JFC)的一部分。JFC指的是包含在Java2平台内的一整套图形和用户界面技术,...

SpringCloudGateway网关服务实现文件上传功能

说明Gateway网关服务本想实现前后端的文件上传及下载功能,但是在实际开发过程中屡屡产生报错,导致一直报错“400badrequest:Requiredrequestpart‘file’isnotpresent”后端无法解析接收到文件数据,从而导致无法实现前端文件上传及后端接收解析过程,本文就是为了记录成功案例,以及描述本人尝试其他方案的感受,便于其他人吸取经验,排雷。SpringBoot和Sp...

Java反射之getInterfaces()方法

发布时间:2019-02-20 JAVA相关 反射
博客引用处(以下内容在原有博客基础上进行补充或更改,谢谢这些大牛的博客指导):Java反射之getInterfaces()方法getInterfaces()方法和Java的反射机制有关。它能够获得这个对象所实现的所有接口。例如:Class<?>string01=person.getClass().getInterfaces()[0];//获得person对象所实现的第一个接口详细的例子...

Java自带性能分析工具

发布时间:2017-04-21 JAVA相关 工具使用相关
安装好JDK后,其目录中就包含了许多性能分析工具:1、jvisualvm用于连接远程JVM,监控系统运行性能参数。2、jconsoleJConsole是一个基于JMX的GUI工具,用于连接正在运行的JVM,不过此JVM需要使用可管理的模式启动。您可以轻松地使用JConsole(或者,它更高端的“近亲”VisualVM)来监控Java应用程序性能和跟踪Java中的代码,jconsole相比于jvis...

java开发连接池配置方法总结

发布时间:2015-07-09 数据库 JAVA相关
  在实际应用开发中,特别是在WEB应用系统中,如果JSP、Servlet或EJB使用JDBC直接访问数据库中的数据,每一次数据访问请求都必须经历建立数据库连接、打开数据库、存取数据和关闭数据库连接等步骤,而连接并打开数据库是一件既消耗资源又费时的工作,如果频繁发生这种数据库操作,系统的性能必然会急剧下降,甚至会导致系统崩溃。数据库连接池技术是解决这个问题最常用的方法,在许多应用程序服务器(例如:...

Effective java 第三条

发布时间:2011-10-11 JAVA JAVA相关
用私有构造器或者枚举类型强化Singleton属性。 两种方法:第一种:publicclassElvis{publicstaticfinalElvis=newElvis();privateElvis(){}publicvoidleaveTheBuilding(){}}  第二种:publicclassElvis{privatestaticfinalINSTANCE=newElvis();priva...

MyEclipse中防止代码格式化时出现换行的情况的设置

发布时间:2010-10-19 JAVA相关 ECLIPSE MYECLIPSE
编辑完成代码,用MyEclipse的代码格式化后,本来不长的代码也被自动转成了多行。虽然自动换行以后在编辑器中一眼就能看到全部的代码,但是可读性却大打折扣,避免出现这种情况的办法是:1.Java代码打开Eclipse的Window菜单,然后Preferences->Java->CodeStyle->Formatter->Edit/Show(根据不同版本可用的按钮会不一样)-...

java InputStream读取数据问题

发布时间:2010-10-19 SOCKET API 通讯 JAVA 网络 BYTE JAVA相关
1.关于InputStream.read()    在从数据流里读取数据时,为图简单,经常用InputStream.read()方法。这个方法是从流里每次只读取读取一个字节,效率会非常低。    更好的方法是用InputStream.read(byte[]b)或者InputStream.read(byte[]b,intoff,intlen)方法,一次读取多个字节。2.关于InputStream类的...

多线程调用AXIS2 线程不安全客户端stub 解决办法:对象池

发布时间:2017-12-28 异步 JAVA相关 安全 多线程
网上关于多线程调用webService全是一句话:”虽然直接使用多线程可以很好地解决这个问题,但比较麻烦。幸好Axis2的客户端提供了异步访问WebService的功能。”我也知道比较麻烦,也知道幸好Axis2的客户端提供了异步访问WebService的功能。但是能别每篇文章都是一样的转载吗?我踏马就是想知道直接使用多线程调用webService的资料!网上关于多线程调用axis2生成的stub,...

Maven插件使用Mybatis-generator代码生成器

Mybatis-generator有什么用?答:可以根据我们已经设计好的数据库表帮助我们自动生成实体类(pojo)、接口(dao)、映射文件(mapper),这样就可以避免每次使用表的时候手动创建一些类和映射文件,节约了大量的时间。(仅限于简单的CRUD操作)Mybatis-generator什么时候用?答:当你无数次的创建这些类与映射文件并且感到想吐的时候,就可以使用它了,前提:数据库表已经设计...

使用Java生成全部数独(Sudoku)布局

发布时间:2009-01-14 EXCEPTION LAYOUT 算法 NULL JAVA BYTE JAVA相关
/***********本人原创,欢迎转载,转载请保留本人信息*************//***********文章发表请与本人联系,作者保留所有权利*************/作者:wallimn电邮:wallimn@sohu.com博客:http://blog.csdn.net/wallimn网络硬盘:http://wallimn.ys168.com时间:2009-01-14/*******...

什么情况下ThreadLocal会导致内存泄漏(附案例)

发布时间:2019-12-24 JAVA相关
如果没有看过ThreadLocal源码的,建议先去看看源码在来看这篇帖子,博主这篇帖子主要是先真实的模拟一下,什么情况下会导致内存泄漏。网上关于ThreadLocal的文档很多,就不过多追溯基础原理了。每个Thread本身会维护一个threadLocals,这个对象就是一个ThreadLocal.ThreadLocalMap,而ThreadLocal维护一个ThreadLocalMap,这个Map...

Nexus私服搭建、配置、上传snapshot

发布时间:2016-06-15 JAVA相关
博主折腾了很久,终于通过各种看资料,稍微弄懂了一点私服。现在将自己的理解记录下来。背景实验室需要有一个比较大的项目,想要把功能尽可能细分。这里使用maven来管理项目。项目被细分为project-parent、project-war、project-a、project-b。其中后三个项目只是集成parent的pom的一些jar包,并不是模块关系。然后本人搭建了一个私服,想要从私服上下载jar包。N...

jvm——垃圾收集算法

发布时间:2020-01-17 JAVA JAVA相关 JVM
垃圾回收的区域    讲垃圾回收之前,我们首先要明确,垃圾回收的区域是方法区和堆,而方法区中主要是类信息,调用指令,常量等,这些一般是不能回收的,所以垃圾回收的主要区域是堆。垃圾定位(标记)    我们要回收内存中的垃圾,我们首先要定位到这块垃圾,否则我们也不知道收集哪里的内存,jvm中定位内存普遍有引用计数器和可达性分析两种算法,其中引用计数器已经被淘汰,现在主流的都是可达性分析算法。引用计数器...

Json转换神器之Google Gson的使用

发布时间:2014-09-10 GSON JAVA相关 JSON
1.下载Gson的jar包,拷贝到项目的lib文件夹中,并将其加入到buildPath中。使用maven的同学,直接在pom中加入以下依赖即可:?12345<dependency>  <groupId>com.google.code.gson</groupId>  <artifactId>gson</artifactId>  <ve...

输入一个字符串,打印出该字符事中字符的所有排列。

/***题目:输入一个字符串,打印出该字符事中字符的所有排列。例如输入字符串abc。*则打印出由字符a、b、c所能排列出来的所有字符串abc、acb、bac、bca、cab和cba。**@paramchars待排序的字符数组*/publicstaticvoidpermutation(char[]chars,intbegin){//如果是最后一个元素了,就输出排列结果if(chars.length-...

java中static的作用

发布时间:2007-03-01 STRING METHODS JAVA CLASS VARIABLES JAVA相关
有时你希望定义一个类成员,使它的使用完全独立于该类的任何对象。通常情况下,类成员必须通过它的类的对象访问,但是可以创建这样一个成员,它能够被它自己使用,而不必引用特定的实例。在成员的声明前面加上关键字static(静态的)就能创建这样的成员。如果一个成员被声明为static,它就能够在它的类的任何对象创建之前被访问,而不必引用任何对象。你可以将方法和变量都声明为static。static成员的最常...

activemq笔记

发布时间:2019-04-12 JAVA相关 XML配置文件
/xml配置文件/其他配置/activemq的配置/activemq笔记.txt运行H:\黑马java淘宝68元\14-国际物流云商项目\day14\day14\资料\activeMQ\soefware\apache-activemq-5.14.5\bin\win64的activemq.bat打开服务器,访问http://localhost:8161可以管理和查看详细队列,账号密码都是admin。...

maven和ant 的区别

发布时间:2015-07-13 JAVA相关 ANT MAVEN
第一:每次和别人说maven的时候,很多会认为是全新的东西而不肯放弃ant。其实,ant脚本是可以直接运行在maven中的。如果要说maven和ant有什么差别,我觉得最大的差别就是在于maven的编译以及所有的脚本都有一个基础,就是POM(projectobjectmodel)。这个模型定义了项目的方方面面,然后各式各样的脚本在这个模型上工作,而ant完全是自己定义,显然maven更胜一筹。第二...

Lucene Hack之通过缩小搜索结果集来提升性能

发布时间:2010-10-04 FILTER NULL 算法 QUERY FLOAT JAVA相关 LUCENE
转自:http://www.javaeye.com/topic/78884http://www.javaeye.com/topic/80073 一、缘起Lucene在索引文件上G之后的搜索性能下降很严重,随便跑个搜索就要上0.x秒。如果是单线程搜索那么性能尚可,总可以在0.x秒返回结果,如果是Web式的多线程访问,由于Lucene的内部机制导致数据被大量载入内存,用完后立即丢弃,随之引起JVM频繁...

Mybatis源码之执行数据库脚本工具阅读

发布时间:2016-11-27 MYBATIS 脚本 JAVA相关
Mybatis里边有个ScriptRunner类,这个类是用来执行脚本的,我们可以直接用来调用去执行一些写好的脚本,就不用自己再写一套实现了,以下是源码,我已经加了相关的注释,相信大家一看就懂/**
*Copyright2009-2016theoriginalauthororauthors.
*
*LicensedundertheApacheLicense,Version2...

JAVA修改jar包的内容

发布时间:2020-07-13 JAVA JAVA相关
查看jar包内容[root@rg-sso-7b6694b4c-f5qdhapp]#jartfrg-0.0.1-SNAPSHOT.jarMETA-INF/META-INF/MANIFEST.MFBOOT-INF/BOOT-INF/classes/BOOT-INF/classes/services/BOOT-INF/classes/static/BOOT-INF/classes/static/css/...

读“淘宝Java中间件之路”后感

发布时间:2011-09-22 JAVA 数据库 JAVA相关
读了"华黎"的“淘宝Java中间件之路”,记录一下自己的体会。 文章主要讲了淘宝在3个方面的改进:消息中间件(JMS的引入),服务框架(业务模块分离)和分布式数据层(如何处理海量数据的数据库操作) 1.消息中间件和EBAY的“AsynchronyEverywhere”想法类似【见Reference中的“ArchitecturalLessons(round1)”】,将原本同步的操作,转成异步操作。此...

Java中的散列表

发布时间:2009-12-28 JAVA JAVA相关
任何Java对象都有一个继承自Object类的hashcode()方法用来返回这个对象对应的散列值。散列值最常见的使用是会被用来在散列表中查找索引值的用到。 不同索引值在节点会处在不同的散列表的不同节点上;相同散列值的节点以一个单向链表相连。 查找过程大致如下: inthashcode=key.hashCode();intindex=(hashcode&0x7FFFFFFF)%hashMa...

GC的实践 - 响应时间优先

发布时间:2009-12-15 JAVA相关 HIBERNATE BLOG JVM 框架 SPRING
前段时间在公司进行了GC的调优实践,记录一下供以后参考。基本上,和网上其他人提供的配置都差不多。 调优前情况: 采用并行收集器,系统TPS约600,为每隔15分钟左右会产生一次FullGC,FullGC的时间大约15秒,FullGC期间系统无法接收任何响应,操作系统的CPU使用率下降到5%一下(平时大约30%-40%)。 调整前JVM参数:-server-D_Offline_FileDataArc...

java方法的理解、调用栈与异常处理

一、流程分支   If/else:基于boolean值的双分支   Switch:基于数字(整数、char、byte、枚举)、字符串     类型的多分支 Intmonth=5;Switch二、方法method1.方法就是一个子程序Java中方法的命名规范是驼峰命名法。   intadd(inta,intb){      intresult=a+b;      returnresult;} flo...

Java中数组表示1(一维数组的定义、初始化和内存中数组的表示)

各个语言中都有数组,但Java中是有区别的,Java中只有一维数组,没有多维数组,多维数组使用数组的数组来表示的。所以下面介绍的数组主要以一维数组来表示。1.数组的定义数组类型也是一种类型,本身是一种引用类型,例如int是一个基本数据类型,但是int[]就是一种引用数据类型。其定义方式有两种,分别为:类型数组名[];  如:String arrayName1[];   intarrayName2[...

isEmpty判断是否为空

发布时间:2017-08-02 JAVA相关
publicclassIsEmpty{publicstaticbooleanisEmpty(Stringinput){if(input==null||"".equals(input)){returntrue;}for(inti=0;i<input.length();i++){charc=input.charAt(i);if(c!=''&&c!='\t'&&c!...

Java中的ThreadLocal对象

发布时间:2017-04-04 JAVA相关 THREADLOCAL THREADLOCALMAP
1.什么是ThreadLocal  根据JDK文档中的解释:ThreadLocal的作用是提供线程内的局部变量,这种变量在多线程环境下访问时能够保证各个线程里变量的独立性。  从这里可以看出,引入ThreadLocal的初衷是为了提供线程内的局部变量,而不是为了解决共享对象的多线程访问问题。实际上,ThreadLocal根本就不能解决共享对象的多线程访问问题。2.ThreadLocal实现原理  ...

对Java如何判断HashSet和HashMap中…

发布时间:2014-12-23 JAVA相关
HashSet和HashMap一直都是JDK中最常用的两个类,HashSet要求不能存储相同的对象,HashMap要求不能存储相同的键。那么Java运行时环境是如何判断HashSet中相同对象、HashMap中相同键的呢?当存储了“相同的东西”之后Java运行时环境又将如何来维护呢?在研究这个问题之前,首先说明一下JDK对equals(Objectobj)和hashcode()这两个方法的定义和规...

int 转 String 位数补全0

发布时间:2017-11-10 JAVA相关
需求:int:1输出“0001”int:11输出“0011”int:111输出“0111”int:1111输出“1111”解决:可用java.text.DecimalFormat@TestpublicvoidtestDecimalFormat(){//需要补全几位0,就输入几个"0000"//format(args)args为需要format的inttypeargsStringformat=new...

深入理解Java迭代器Iterator

发布时间:2020-12-28 JAVA JAVA相关
一、Iterator概述:由Java容器继承体系结构图可知,Iterator是一个接口,它是迭代器的基本接口。但在Collection接口中继承的是Iterable接口。二、源码剖析Iterator1、Iterator是迭代器的基本接口,而在Collection接口中继承的是Iterable接口,不过Iterable中有iterator()这个方法,返回的是Iterator。说明Iterable接...