根据输入查找和提取数据库值(Java & SQL 服务器)
Lookup and extract db value based on input (Java & SQL Server)
新 java。
我正在尝试编写一个 class 来输入用户名,运行 查询用户名以查找 ID,然后在 "where clauses" 我所有其他 [=29] 上使用该 ID =]es.
这是我执行的语句(它只会 return 单行的记录集):
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 语句中 selecting 该列,因此会出错。
- 如果你 select 它并得到一个字符串,使用
.equals()
而不是 ==
来比较字符串。另外,一个=
是赋值,==
是比较。
- 您可以使用
getString
从结果集中读取字符串。
- 您不需要检查用户名并匹配它,因为您的查询应该 return 正是该用户的数据,所以我将完全删除 if 条件,只在其中添加 getInt 行。
新 java。
我正在尝试编写一个 class 来输入用户名,运行 查询用户名以查找 ID,然后在 "where clauses" 我所有其他 [=29] 上使用该 ID =]es.
这是我执行的语句(它只会 return 单行的记录集):
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 语句中 selecting 该列,因此会出错。- 如果你 select 它并得到一个字符串,使用
.equals()
而不是==
来比较字符串。另外,一个=
是赋值,==
是比较。 - 您可以使用
getString
从结果集中读取字符串。 - 您不需要检查用户名并匹配它,因为您的查询应该 return 正是该用户的数据,所以我将完全删除 if 条件,只在其中添加 getInt 行。