首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SqlDataReader与方法范围

SqlDataReader与方法范围
EN

Stack Overflow用户
提问于 2014-04-07 10:10:05
回答 1查看 123关注 0票数 0

为什么从SqlDataReader读取的数据不能用于方法调用?我有一张桌子,里面有“id”一栏。当我对数据库进行查询时,它会返回行。

此代码不工作(说'id‘列不存在):

代码语言:javascript
复制
con.Open();
SqlDataReader requestReader = cmd.ExecuteReader();
if (requestReader.HasRows)
{
   DataTable requestTable = requestReader.GetSchemaTable();
   request = ReadRequest(requestTable.Rows[0]);        
}

con.Close();

而这一次起作用:

代码语言:javascript
复制
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();
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-07 10:16:45

您使用的是DataReader.GetSchemaTable,它返回包含给定表的所有模式信息的DataTable

它有以下各栏:

代码语言:javascript
复制
ColumnName
ColumnOrdinal
ColumnSize
NumericPrecision
// .. 26 others

所以你找不到你的id列,它属于你的表。这就是为什么您会得到错误"'id‘列不存在“。我怀疑你的第二种方法是否有效。我不明白你为什么需要GetSchemaTable。你只需要把读者提前到下一张唱片:

代码语言:javascript
复制
if (requestReader.HasRows && requestReader.Read())
{
   int id = requestReader.GetInt32(requestReader.GetOrdinal("id"));
   // ...
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22909402

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档