【发布时间】:2011-12-20 16:34:58
【问题描述】:
我有以下代码,应该能够获取表中的主键
public List<string> GetPrimaryKeysForTable(string tableName)
{
List<String> retVal = new List<string>();
SqlCommand command = connector.GetCommand("sp_pkeys");
command.CommandType = System.Data.CommandType.StoredProcedure;
command.Parameters.AddWithValue("@table_name", typeof(SqlChars)).Value = tableName;
SqlDataReader reader = command.ExecuteReader();
while (reader.Read())
{
retVal.Add(reader[3].ToString());
}
return retVal;
}
我的数据库中有一个名为Users 的表。当我将Users 作为参数传入时,阅读器不会返回任何结果。知道为什么这可能无法返回我的主键吗?
【问题讨论】:
-
您确定要对包含
Users表的数据库(而不是master数据库,例如)执行命令吗? -
您是否尝试过查询分析器中的“exec sp_pkeys Users”?
-
嗨,你在这行得到了正确的值吗:retVal.Add(reader[3].ToString());?您还可以指定列名而不是其编号。这样,您可以执行以下操作: retVal.Add(reader["key"].ToString());并且更容易判断您是否正在尝试获取正确的列值。
-
有意思,我刚试过,好像不行?我只是假设存储过程会起作用。我也用合格的模式尝试过......仍然没有运气。不过这张表肯定存在。
-
@marc_s - 这不是 OP 自己的程序。这是一个系统。
标签: c# sql sql-server database sql-server-2008