C# 如何从sql server 2008获取列值?

C# 如何从sql server 2008获取列值?,c#,asp.net,sql,sql-server-2008,C#,Asp.net,Sql,Sql Server 2008,我有一个表,其中有5列: 我这样写代码: String SQLQuery = "SELECT count(*) FROM aspnet_Users where Username=@uname AND Password = @pwd"; using(SqlConnection sqlConnection = new SqlConnection(strConnection)) using(SqlCommand command = new SqlCommand(SQLQuery, sq

我有一个表,其中有5列:

我这样写代码:

String SQLQuery = "SELECT count(*) FROM aspnet_Users where Username=@uname AND Password = @pwd";
    using(SqlConnection sqlConnection = new SqlConnection(strConnection))
    using(SqlCommand command = new SqlCommand(SQLQuery, sqlConnection))
    {
        sqlConnection.Open();
        command.Parameters.AddWithValue("@uname", Username);
        command.Parameters.AddWithValue("@pwd", Password);
        int result = Convert.ToInt32(command.ExecuteScalar());
        boolReturnValue = (result > 0);
    }
这里还有一些我需要的额外信息,如果上面的用户名和密码是正确的,
我需要的是:userid和role列数据

为什么不直接获取userid而不是Count(*),所以您的查询应该如下所示:

SELECT UserId FROM aspnet_Users where Username=@uname AND Password = @pwd

用户名应该是唯一的,因此您不应该检索多行…如果您有多个相同用户名和相同密码,您可以添加一个前1名。

为什么不直接获取用户名而不是计数(*),因此您的查询应该如下所示:

SELECT UserId FROM aspnet_Users where Username=@uname AND Password = @pwd

用户名应该是唯一的,所以您不应该检索多行…如果您有多个相同用户名和相同密码,您可以添加前1名。

为什么不这样做

string SQLQuery = "SELECT UserId FROM aspnet_Users where Username=@uname AND Password = @pwd";
[...]
object result = command.ExecuteScalar();
if (result == null)
{
    boolReturnValue = false;
}
else
{
    long userId = Convert.ToInt64(result);
    boolReturnValue = true;
}

你为什么不这么做

string SQLQuery = "SELECT UserId FROM aspnet_Users where Username=@uname AND Password = @pwd";
[...]
object result = command.ExecuteScalar();
if (result == null)
{
    boolReturnValue = false;
}
else
{
    long userId = Convert.ToInt64(result);
    boolReturnValue = true;
}
试试这个代码

SELECT count(*),userid,role FROM aspnet_Users where Username=@uname AND Password = @pwd Group by userid,role 
试试这个代码

SELECT count(*),userid,role FROM aspnet_Users where Username=@uname AND Password = @pwd Group by userid,role 

你能重写我的密码以获得完美答案吗?我正在检查用户名和密码以获得登录详细信息,我需要用户名,如果登录成功:)你能重写我的代码以获得完美答案吗?请,我正在检查用户名和密码以获得登录详细信息,我需要用户名,如果登录成功:)我希望您在密码存储中使用某种形式的散列,而不仅仅是纯文本(并且使用适当的散列,而不仅仅是一次通过
sha256
,可以在rainbow表或其他数据库中轻松查找),您不会说如果您不这样做,我只是想确认你是。我确实希望你在密码存储中使用某种形式的散列,而不仅仅是纯文本(并且使用适当的散列,而不仅仅是一次通过
sha256
,可以在rainbow表或其他数据库中轻松查找),你不会说如果你不是,我只是想确认一下,若我需要表中的2个值呢?假设我需要UserId和lastActiveDate您需要使用command.ExecuteReader()而不是command.ExecuteScalar()ExecuteReader()将返回SqlDataReader,您需要对其进行迭代@Alireza:command.Parameters.AddWithValue没有检查SQL注入?@Falydoor Oops!你是对的。我没有注意到传递的参数没有连接。对不起,如果我需要表中的2个值呢?假设我需要UserId和lastActiveDate您需要使用command.ExecuteReader()而不是command.ExecuteScalar()ExecuteReader()将返回SqlDataReader,您需要对其进行迭代@Alireza:command.Parameters.AddWithValue没有检查SQL注入?@Falydoor Oops!你是对的。我没有注意到传递的参数没有连接。很抱歉