从c#asp.net?

时间:2016-12-29 09:09:42

标签: c# asp.net sql-server

我正在尝试调用一个返回多个值的SQL Server存储过程,例如,如果输入id = 1,则返回id = 1的所有人的名称。

现在,我的目标是将ID存储在string类型的列表中。我尝试了以下但由于某种原因,列表总是返回null,我无法找出结果未存储在列表中的原因。

请帮助我弄清楚我的错误。这是我到目前为止所尝试的。我在以下几行中收到错误,我无法理解为什么会出现错误。

fname = rdr["Fullname"].ToString;
names.add(fname);

SQL Server代码:

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER PROCEDURE [dbo].[login_users]
    (@uname NVARCHAR(50), @pass NVARCHAR(50))
AS
BEGIN
    SET NOCOUNT ON;

    SELECT UserName, Password, Fullname
    FROM dbo.users
    WHERE UserName = @uname AND [Password] = @pass
END

C#代码:

protected void LogIn_Click(object sender, EventArgs e)
{
    establishconnection();

    String username = usernamelogin.Text;
    String password = passwordlogin.Text;

    String fname = null;

    List<String> names;

    establishconnection();

    try
    {
        cnn.Open();

        SqlCommand cmd = new SqlCommand("dbo.login_users", cnn);
        cmd.CommandType = CommandType.StoredProcedure;

        cmd.Parameters.Add(new SqlParameter("@uname", username));
        cmd.Parameters.Add(new SqlParameter("@pass", password));

        using (SqlDataReader rdr = cmd.ExecuteReader())
        {
            // iterate through results, printing each to console
            while (rdr.Read())
            {
                fname = rdr["Fullname"].ToString;
                names.add(fname);
            }
        }

        cnn.Close();
    }
    catch (Exception ex)
    {
        Console.WriteLine(ex.Message);
    }
}

1 个答案:

答案 0 :(得分:0)

您需要先实例化列表,然后才能添加新项目。

....
List<string> names = new List<string>();
.....