根据输入查找并提取db值(Java& SQL Server)

时间:2018-02-13 20:25:22

标签: java sql sql-server variables recordset

java新手 我正在尝试编写一个将输入用户名的类,在用户名上运行查询以查找ID,然后在我所有其他类的“where子句”中使用该ID。

这是我执行的语句(它只会返回单行的记录集):

String sqlStatement = "SELECT AccountHolderId, Passcode from CIS4720.DBO.AccountHolder " +
"where Username = '" + logonName + "'";  

以下是我尝试通过用户名...

提取ID
while (rset.next())
    {
        if(rset.getInt("Username")==logonName){
            int whosOnFirst = rset.getInt("AccountHolderId");
        }

我在论坛上看到另一个答案,说你无法将数据库值分配给变量。如果是这样的话,什么是更好的策略?

(另外,我意识到我没有参数化,但是我想在解决这个问题之前让它工作。这是一个课程作业,所以我不担心黑客攻击)。

P上。谢谢我修复了上面代码中的双等号(以及额外的括号)。

1 个答案:

答案 0 :(得分:1)

以下是有关代码的一些评论:

  • rset.getInt("Username")将从结果中获取用户名列,但由于getInt,它还会查找Integer列。您没有在sql语句中选择该列,因此会出错。
  • 如果您选择并获取字符串,请使用.equals()代替==来比较字符串。此外,一个=是分配,==是比较。
  • 您可以使用getString从结果集中读取字符串。
  • 您不需要检查用户名并匹配它,因为您的查询应该完全返回该用户的数据,因此我会完全删除if条件并且只有getInt行。