为什么从SqlDataReader读取的数据不能用于方法调用?我有一张桌子,里面有“id”一栏。当我对数据库进行查询时,它会返回行。
此代码不工作(说'id‘列不存在):
con.Open();
SqlDataReader requestReader = cmd.ExecuteReader();
if (requestReader.HasRows)
{
DataTable requestTable = requestReader.GetSchemaTable();
request = ReadRequest(requestTable.Rows[0]);
}
con.Close();而这一次起作用:
con.Open();
SqlDataReader requestReader = cmd.ExecuteReader();
if (requestReader.HasRows)
{
DataTable requestTable = requestReader.GetSchemaTable();
var requestRow = requestTable.Rows[0];
request = new Request();
request.UniqueId = (string)requestRow["id"];
}
con.Close();发布于 2014-04-07 10:16:45
您使用的是DataReader.GetSchemaTable,它返回包含给定表的所有模式信息的DataTable。
它有以下各栏:
ColumnName
ColumnOrdinal
ColumnSize
NumericPrecision
// .. 26 others所以你找不到你的id列,它属于你的表。这就是为什么您会得到错误"'id‘列不存在“。我怀疑你的第二种方法是否有效。我不明白你为什么需要GetSchemaTable。你只需要把读者提前到下一张唱片:
if (requestReader.HasRows && requestReader.Read())
{
int id = requestReader.GetInt32(requestReader.GetOrdinal("id"));
// ...
}https://stackoverflow.com/questions/22909402
复制相似问题