【发布时间】:2018-02-13 20:25:21
【问题描述】:
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。 S. 谢谢我在上面的代码中修复了双等号(和额外的括号)。
【问题讨论】:
-
rset.getInt("Username")将从结果中获取用户名列,但由于getInt,它也会查找整数列。您没有在 sql 语句中选择该列,因此会出错。此外,如果您选择它并获取一个字符串,请使用.equals()而不是==来比较字符串。另外,=是赋值,==是比较。 -
您可以使用
getString从结果集中读取字符串。您无需检查用户名并进行匹配,因为您的查询应该准确返回该用户的数据,因此我将完全删除 if 条件,只在其中添加getInt行。 -
查询中
Username后面多了一个括号。 -
还有什么问题吗?似乎它应该适用于 cmets 中提到的更改。
-
谢谢@clinomaniac。它现在正在工作,但是当我将 whosOnFirst 整数变量放在另一个类中时,它无法识别它。我原以为通过在标有“public class void”的类中声明它可以让我在程序中的任何地方使用这个变量。
标签: java sql sql-server variables recordset