SQL Server打印语句在数据表中返回null

时间:2018-01-23 02:50:41

标签: c# sql asp.net sql-server-2016

我正在使用 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;
    }

3 个答案:

答案 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')