【问题标题】:Display duplicate entries in SQL table using Java使用 Java 显示 SQL 表中的重复条目
【发布时间】:2016-09-05 09:04:09
【问题描述】:

我目前正在尝试通过使用 sql 语句在 java 中的数据库中搜索重复字段来访问主键。我的数据库包含书籍 ID 的主键,并包含同一本书的多个副本。这些书籍具有相同的 ISBN,但书籍 ID 不同。是否可以使用 SQL 选择语句提取这些唯一 ID?每当我运行以下 select 语句时,我只能获取其中一个副本上的数据:

String queryString =   
    "select bid, title, author, checked from book where isbn = " + ID;

ResultSet resultSet = stmt.executeQuery(queryString);

if (resultSet.next()){
  bid = resultSet.getString(1);
  title = resultSet.getString(2);
  author = resultSet.getString(3);
  checked = resultSet.getString(4);
}
resultSet.close();

如果我在我的 SQL 工作台中运行相同的语句,则会提取所有数据。 java中如何提取唯一键?

【问题讨论】:

    标签: java sql


    【解决方案1】:

    rset2.next() 将光标移动到下一行。由于您似乎没有任何循环遍历结果集,因此它不会超出第一行。

    【讨论】:

      【解决方案2】:

      您使用了 if 条件,该条件允许您仅获取从查询中获取的第一条记录。 而是使用:

      while(rs.next()) {
      // TO DO
      }
      

      【讨论】:

        【解决方案3】:

        将 if(resultSet.next()) 更改为 while(resultSet.next()) :

        String queryString =   
            "select bid, title, author, checked from book where isbn = " + ID;
        
        ResultSet resultSet = stmt.executeQuery(queryString);
        
        // "while" instead of "if"
        while (resultSet.next()){ 
          bid = resultSet.getString(1);
          // etc
        
          // do something
        }
        resultSet.close();
        

        "if" 只获取第一个元素,"while" 获取所有元素

        查看本题答案:Similar Question

        【讨论】:

        • 我正在使用 while 语句并收到以下错误:java.sql.SQLException: Column Index out of range, 3 > 2.
        • 那是列的问题。您使用的 resultSet.getString 的数量比实际的列数更高
        • 我可以提取第二行,但是 while 语句跳过了第一行
        • 跳过第一行或第一列?
        • 第一行被跳过,第二行的数据被分配给我的变量。我只能使用 if 语句从第一行检索数据,然后使用 while 语句。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-05-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-11-19
        相关资源
        最近更新 更多