java - 从 Java 中的 SQL 查询(SELECT FROM WHERE)中检索数据

标签 java mysql sql-server

嗯,我想知道是否有任何其他方法可以从 SQL 查询中获取数据。 我的意思是,我总能找到的“主要”代码是

Connection con = (connect to db)
PreparedStatement st = con.prepareStatement(....);
ResultSet rs = ps.executeQuery();

while (rs.next())
{
  //do something
}

但如果我想检索特定数据,例如让我们假设我的查询是

            Connection con = L2DatabaseFactory.getInstance().getConnection();
            PreparedStatement ps = con.prepareStatement("SELECT login,email FROM accounts WHERE login=?");
            ps.setString(1, account);
            ResultSet rs = ps.executeQuery();

            while (rs.next())
            {
                if (rs.getString("login").equals(account))
                {
                    email = rs.getString("email");
                    break;
                }
            }

除了while循环取数据还有别的方法吗?

最佳答案

while 循环中的 if 条件是完全多余的 - where 子句处理它并确保从该循环返回的任何数据查询将有一个 login 字段,该字段等于 account 的值。

如果您确定这样的行不超过一行(例如,login 列是您表中的唯一标识符),您可以只替换 while 使用 if 循环:

// Check that such a logic exists
if (rs.next()) {
    email = rs.getString("email");
}

// for good measures, just double check there isn't more than one 
// of these logins:
if (rs.next()) {
    throw new Exception ("This cannot be!"); // Or something more sensible
}

关于java - 从 Java 中的 SQL 查询(SELECT FROM WHERE)中检索数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32321397/

相关文章:

mysql - 我需要为 Facebook 游戏购买 MySQL DB 服务器许可证吗

Mysql - 帮助优化查询

java - 此处用 Java 实现的二叉树中 LCA 的时间复杂度是多少

java - 一个队列中的多个监听器 RabbitMQ Spring

java - 将 aws-java-sdk 添加到 pom 时,@JsonIgnore 不起作用。为什么?

php - 将 LOAD DATA UNFILE MySQL UPDATE 转换为 php

java - 如何将数据库写入和电子表格写入分组为单个 "transaction"

sql - PIVOT 表仅在 SQL Server 中的一行中?

php - SQL 和不区分大小写的条件

java - JPanel 之间的通信