C#数据表未加载数据

问题描述

我在c#控制台应用程序中有一个方法,该方法传递存储过程名称的字符串并返回数据表。

public DataTable Table(int val,string ProcedureName)
{
    string Pk = "@" + ProcedureName + "Id";
    var command = GetCommand(ProcedureName);
    command.Parameters[Pk].Value = val;
    DataTable table = new DataTable();
    sqlDataAdapter adapter = new sqlDataAdapter(command);
    adapter.SelectCommand.CommandType = CommandType.StoredProcedure;         
    adapter.Fill(table);
    return table;
}

这是GetCommand帮助程序方法代码

internal sqlCommand GetCommand(string ProcedureName)
{
    sqlCommand cmd = new sqlCommand()
    {
        Connection = BuildingSecurityContext(),CommandType = CommandType.StoredProcedure,CommandText = ProcedureName
    };

    _BuildingSecurityContext.open();
    sqlCommandBuilder.DeriveParameters(cmd);
    _BuildingSecurityContext.Close();
    return cmd;
}

这是将结果打印到控制台的方法

static void ReadResults(DataTable table)
{
    for (int i = 0; i < table.Rows.Count; i++)
    {
        Console.WriteLine($"{table.Rows[i].Field<int>(0)}{table.Rows[i].Field<string>(1)}{table.Rows[i].Field<string>(2)}");
    }
}

问题是我遇到一个错误,找不到第1列。(在我看来,该命令未填充数据表)。

有人可以指出我要去哪里了吗?

解决方法

参数以@开头,但是大多数过程都不是-您确定要在@之前加上符号吗?

这行也没有意义

 command.Parameters[Pk].Value = val;