【问题标题】:Getting data from database if two more than one record is present如果存在两条以上的记录,则从数据库中获取数据
【发布时间】:2013-01-11 15:50:44
【问题描述】:

我正在开发一个应用程序,在该应用程序中,我从数据库中选择具有名称的 rcode(numbers)。如果名称存在,它将显示与其关联的 rcode。像

这样的输出
10001 

假设,如果存在两个同名的名字,它将显示为

10001 10002

这是我的 servlet 代码。

ResultSet rs=stmt.executeQuery("select * from newfarmer where rname='"+get+"'");
while(rs.next()){
    username=rs.getString("rname");

    if(get.equals(username)){
        rcode=rs.getString("rcode");
        out.println(rcode);
    }
}

并且, 我在我的 android 应用程序中使用以下代码从中获取数据。那就是我需要选择像 where rname="" 这样的所有数据。现在的问题是,如果存在两条同名记录,它只会拾取一条记录。但 servlet 输出显示为

10001 10002

在我的应用程序中,我计算记录总数并显示它。但它只显示一个

String line = null;
while ((line = reader.readLine()) != null) {
    StringTokenizer st=new StringTokenizer(line);
    count=st.countTokens();
    Toast.makeText(getBaseContext(), count+" names found", 
            Toast.LENGTH_SHORT).show();
    r_code=st.nextToken();
    ff=1;
}

所以,我需要访问这两个记录并计算记录总数。任何人都可以帮助做到这一点

【问题讨论】:

  • 在此基础上您使用 StringTokenizer,因为没有分隔符
  • 如果您只获取 rname = get 的记录,那么为什么要检查 if (get.equals(username))
  • 哦,我现在明白了。谢谢,我会改正的。但是如何解决计数

标签: java android database servlets resultset


【解决方案1】:

我无法理解你为什么在 if 语句中写这个。您无需编写该语句,因为用户名将始终等于获取。删除该语句并尝试再次运行它。

【讨论】:

    【解决方案2】:

    使用列表显示记录并添加一个计数器....,列表参考http://www.vogella.com/articles/AndroidSQLite/article.html

    【讨论】:

    • 好的,但是计数实际上总是显示为1。
    • 确保 count 得到更新,而不是一次又一次地初始化为 1..在一段代码之后
    【解决方案3】:

    out.println(rcode) 添加一个 CRLF(当您使用浏览器查看输出时会忽略它)。如果将其替换为空格字符会怎样?

    out.print(rcode);
    out.print(" ");
    

    【讨论】:

    • line = reader.readLine() 现在应该读取包含 2 个令牌的 1 行,而不是 2 行每个包含 1 个令牌的行,所以 st.countTokens() 现在应该返回 2
    • 哦,是的。我会试试这个并告诉
    • 现在显示 2 个项目。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2020-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-29
    • 2011-05-29
    相关资源
    最近更新 更多