我正在使用 if exists 查询来验证帐户,如果帐户是身份验证则打印为true,否则打印为false。
if exists (select email, password
from client
where email = 'email@example.com' and password = '123')
print 'true'
else
print 'false';
它在SQL Server Management Studio中显示true或false,但是当我从我的网站验证帐户时,数据表行和列计数始终为0.问题是什么,我该如何解决?
public bool ExecuteReader(string query)
{
bool result = false;
SqlConnection con = new SqlConnection(ConnectionString);
con.Open();
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = new SqlCommand(query, con);
con.Close();
dt = new DataTable();
da.Fill(dt);
if (dt.Rows.Count == 1 && dt.Columns.Count == 1)
{
if (dt.Rows[0][0].ToString() == "true")
{
result = true;
}
else
{
result = false;
}
}
return result;
}
答案 0 :(得分:2)
PRINT
返回消息而不是结果集(需要SqlConnection.InfoMessage事件处理程序)。请使用SELECT
语句将结果加载到DataTable
:
IF EXISTS(SELECT 1
FROM dbo.client
WHERE email = 'email@example.com' AND password = '123'
)
SELECT 'true'
ELSE
SELECT 'false';
答案 1 :(得分:0)
您查询使用print'true',否则打印'false'。 print语句不返回一行数据;使用select'true',否则选择'false'。
此外,在执行填充数据表的命令之前,您正在关闭连接;尝试在da.Fill(dt)之后移动con.Close()。
答案 2 :(得分:0)
尝试这一个以及完成所有操作后的密码。
SELECT
ISNULL((SELECT
'true'
FROM client
WHERE email = 'email@example.com'
AND password = '123')
, 'false')