0

我如何使用java中的单个结果集检查是否有记录并从数据库中获取值...

我正在使用此代码来检查数据库中是否有记录..

然后我得到了记录集的值,但它没有获取第二行值......它显示一行值......任何人都给我解决方案......

try {
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    Connection conn = DriverManager.getConnection("jdbc:odbc:mobile","","");
    String qry = "SELECT * from login";
    ResultSet rs = stmt.executeQuery(qry); 
    if (rs.next()) {
        while(rs.next()) { 
            System.out.println(rs.getString("value1");
            System.out.println(rs.getString("value2");
        }     
    } else {
        System.out.println("No Records");
    }
} catch(Exception e) {  
    System.out.println(e);
}
4

4 回答 4

1

尝试这个:

如果要触发数据库中是否存在记录:

if (!rs.next()) 
{
    System.out.println("No Records Found");
}
else
{
    while(rs.next())
    { 
        System.out.println(rs.getString("value1");
        System.out.println(rs.getString("value2");
    }
}

如果您不想触发数据库中是否存在记录,那么以下内容就足够了:

while(rs.next())
{ 
    System.out.println(rs.getString("value1");
    System.out.println(rs.getString("value2");
}

更新1试试 这个:

try
{
    pstmt = con.prepareStatement("Select * from login", ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);
    rs = pstmt.executeQuery();
    if (!rs.next()) 
    {
        System.out.println("No Records Found");
    }
    else
    {
        rs.beforeFirst();
        while(rs.next())
        { 
            System.out.println(rs.getString("value1");
            System.out.println(rs.getString("value2");
        }
    }
}
于 2013-04-18T10:37:00.223 回答
1

您好,您的问题是您在 if 条件和 while 条件下都使用 rs.next() 。当您使用 while 循环时,您不需要检查 if(rs.next())

使用它会导致您记录集的光标进一步移动两个位置,从而导致您跳过第一条记录。

应该使用

if(!rs.isLast()){
    while(rs.next()){
        System.out.println(rs.getString("value1"));
        System.out.println(rs.getString("value2"));
    }
}
于 2013-04-18T10:25:50.487 回答
0

为什么要检查行是否存在?

while(rs.next())会自动检查do下一行是否存在,但如果你想在行不存在时说些什么,你应该使用if(rs.isLast())

于 2013-04-18T10:40:33.160 回答
0

rs.next()方法一次将光标向前移动一行。执行查询后,您可以立即开始迭代ResultSet; 如果您的 中没有单条记录ResultSet,则第一次调用next()将返回false并且您的while块永远不会执行。

您当前的代码总是跳过 中的第一条记录ResultSet,这很可能不是您想要的。

于 2013-04-18T10:26:25.563 回答