ResultSet查询数据库,如何判断查询结果为空?

chaoliu1024 2011-10-10 07:34:42
ResultSet rs = sql.search(sql_SeededRice);  // sql_SeededRice为查询语句
while(rs.next())
{
for(i = 1; i <= 2;i++) // 两列
{
if(rs.getString(i) != null)
responseText += rs.getString(i);
else if(rs.getString(i) == null) // 当列中值时显示"无查询结果"
responseText += "无查询结果";
}
}


问题:当列中有值时,可以把值赋给responseText的
但是,当列中无值时(如图),却不能将"无查询结果"赋给responseText,是不是用rs.getString(i) == null这个判断条件不对呢?
我在jdk里看了下,ResultSet的getString方法返回结果是null的。
...全文
1503 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
wenping5566 2011-10-12
  • 打赏
  • 举报
回复
没有值 rs.next 是空的 所有应该在while外围判断
唯舞断 2011-10-12
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 zl3450341 的回复:]

如果是没有记录,也就是说在数据库是no record 这种情况的话,

while(rs.next())这个语句根本不会走进去。

所以你的responseText 赋值语句根本不会执行。
[/Quote]

顶了
htorc 2011-10-12
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 zl3450341 的回复:]

如果是没有记录,也就是说在数据库是no record 这种情况的话,

while(rs.next())这个语句根本不会走进去。

所以你的responseText 赋值语句根本不会执行。
[/Quote]
+1
24K純帥 2011-10-11
  • 打赏
  • 举报
回复
没值是不会进while循环~
wudi1233 2011-10-11
  • 打赏
  • 举报
回复
RS内无值 还会进入while之内吗?
IT淡淡 2011-10-11
  • 打赏
  • 举报
回复
while(rs.next())
+1
CloudX2019 2011-10-11
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 zl3450341 的回复:]
如果是没有记录,也就是说在数据库是no record 这种情况的话,

while(rs.next())这个语句根本不会走进去。

所以你的responseText 赋值语句根本不会执行。
[/Quote]
softroad 2011-10-11
  • 打赏
  • 举报
回复

if(rs.getString(i) != null)
responseText += rs.getString(i);
else // 当列中值时显示"无查询结果"
responseText += "无查询结果";



把你SQL发出来看看。
magong 2011-10-10
  • 打赏
  • 举报
回复
[Quote=引用楼主 zhzxlc_06 的回复:]
ResultSet rs = sql.search(sql_SeededRice); // sql_SeededRice为查询语句
while(rs.next())
{
for(i = 1; i <= 2;i++) // 两列
{
if(rs.getString(i) != null)
responseText += rs.getString(i);
else if(rs.getString(i) == null) // 当列中值时显示"无查询结果"
responseText += "无查询结果";
}
}
[/Quote]
应该写成

ResultSet rs = sql.search(sql_SeededRice); // sql_SeededRice为查询语句
if(rs.next()){
do{
for(int i = 1; i <= 2;i++){ // 两列
if(rs.getString(i) != null)
responseText += rs.getString(i);
else // 当列中无值时显示"无查询结果"
responseText += "无查询结果";
}
}while(rs.next());
}else //当没有记录时
responseText += "无查询结果";
oxcow 2011-10-10
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 zl3450341 的回复:]

如果是没有记录,也就是说在数据库是no record 这种情况的话,

while(rs.next())这个语句根本不会走进去。

所以你的responseText 赋值语句根本不会执行。
[/Quote]
+1
木木水夕 2011-10-10
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 ioe_gaoyong 的回复:]
上面的回复错了帖子
你这个帖子有两种情况
第一,直接查询结果就有0条,这是一种
第二,查询结果有至少一条,但是对应的字段可能没有值

如果第一种判断,那么你可以利用
int i=0;
while(rs.next()){ i++}
获得i的值,判断结果如果0条就是i=0
如果第二种,如果是字符串的类型,就通过getString("xx")看看返回值是否为null判断
[/Quote]
正解,楼主可以这样试下。
如下代码:(几乎上还是楼主的,只是添加了些)

ResultSet rs = sql.search(sql_SeededRice);  // sql_SeededRice为查询语句
//如果数据库中有记录,但是有的字段是空的,执行下面代码
while(rs.next())
{
for(i = 1; i <= 2;i++) // 两列
{
if(rs.getString(i) != null)
responseText += rs.getString(i);
else if(rs.getString(i) == null) // 当列中值时显示"无查询结果"
responseText += "无查询结果";
}
}

//数据空没有记录,0条数据,可做如下判断
if("".equals(responseText)){
//responseText初始化时为空
responseText +="数据库中没有记录";
}
System.out.println(responseText);
老张-AI 2011-10-10
  • 打赏
  • 举报
回复
如果是没有记录,也就是说在数据库是no record 这种情况的话,

while(rs.next())这个语句根本不会走进去。

所以你的responseText 赋值语句根本不会执行。
oxcow 2011-10-10
  • 打赏
  • 举报
回复
[Quote=引用楼主 zhzxlc_06 的回复:]
Java code
ResultSet rs = sql.search(sql_SeededRice); // sql_SeededRice为查询语句
while(rs.next())
{
for(i = 1; i <= 2;i++) // 两列
{……
[/Quote]

既然不能赋值那么说明rs.getString(i)是不是还有其他值呢,并没有像你表达的逻辑走到elseif中去呢?
你把if elseif else写完整了测试下看看。

if(condition){
}else if(condition){
}else{
}
healer_kx 2011-10-10
  • 打赏
  • 举报
回复
我不是版主啊。
QQ371496669 2011-10-10
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 ioe_gaoyong 的回复:]
Java code

public class Test{
public static void stringReplace (String text){
text = text.replace("j","i");
}

public static void bufferReplace (StringBuffer text){
……
[/Quote]
学习了!
风尘中国 2011-10-10
  • 打赏
  • 举报
回复
上面的回复错了帖子
你这个帖子有两种情况
第一,直接查询结果就有0条,这是一种
第二,查询结果有至少一条,但是对应的字段可能没有值

如果第一种判断,那么你可以利用
int i=0;
while(rs.next()){ i++}
获得i的值,判断结果如果0条就是i=0
如果第二种,如果是字符串的类型,就通过getString("xx")看看返回值是否为null判断
风尘中国 2011-10-10
  • 打赏
  • 举报
回复

public class Test{
public static void stringReplace (String text){
text = text.replace("j","i");
}

public static void bufferReplace (StringBuffer text){
text = text.append ("C");
}

public static void main (String args[]) {
String textString = new String ("java");
StringBuffer textBuffer = new StringBuffer ("java");

stringReplace (textString);
bufferReplace (textBuffer);

System.out.println (textString + textBuffer);
}
}

因为String是不可变类,所以stingReplace方法无法改变textString这个字符串引用所指向字符串的值
而StringBuffer是可变类,bufferReplace方法直接可以改变textBuffer引用所指向的StringBuffer类

67,541

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧