我正在尝试调用一个返回多个值的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);
}
}
答案 0 :(得分:0)
您需要先实例化列表,然后才能添加新项目。
....
List<string> names = new List<string>();
.....