问题描述
ResultSetresult;//...while(result.next()){System.out.println("Index="+result.getInt(1)+""+"Username="+result.getString(2)+""+"Age="+result.getInt(3));if(result.getString(2)=="Knight")System.out.println("Yes");//这里没办法执行}
已经多次试验了,执行结果是这个Index=1Username=KnightAge=22可是为什么result.getString(2)=="Knight"老是判断为false呢?result.getString(2)的数据类型是text求指教!!!
解决方案
解决方案二:
"Knight".equals(result.getString(2))
解决方案三:
if(result.getString(2).equals("Knight"))前提是,result是非只向前结果集。你的代码里看不出是什么类型的结果集。如果是只向前结果集,则同一条记录的getString(2)方法不能调用被第二次调用,你的代码里第二次调用了。
解决方案四:
引用2楼stonefeng的回复:
if(result.getString(2).equals("Knight"))前提是,result是非只向前结果集。你的代码里看不出是什么类型的结果集。如果是只向前结果集,则同一条记录的getString(2)方法不能调用被第二次调用,你的代码里第二次调用了。
解决了!我是初学数据库编程的,请问什么叫非只向前结果集呢?result不是指向一条记录的吗?result.next()不是就指向下一条记录吗?
解决方案五:
只向前,就是所有指针都只能往前走,对于结果集,只能next而不能previous,对于记录,则只能从第一个字段到最后一个字段,比如一点已经取得了第一个记录,那么就不能在重复取得,而只能去取后面的字段了,比如第二个或者第三个。这种结果集通常是速度最快的。非只向前则可以返回之前访问过的记录或者字段,但速度比较慢。