当前位置: 首页 > news >正文

c#OdbcDataReader的数据读取

先有如下c#示例代码:

string strconnect = "DSN=custom;UID=sa;PWD=123456;"

OdbcConnection odbc = new OdbcConnection(strconnect);

odbc.Open();

if (odbc.State != System.Data.ConnectionState.Open)

{

   return;

}

string strSql = "select ID from mytable";

OdbcCommand odbcCmd = new OdbcCommand(strSql, odbc);

OdbcDataReader dtReader = odbc.ExecuteReader();

// 数据库里确保mytable中是有数据的

int tableid = (int)dtReader["ID"];

以上代码有时候正常运行,有时候在最后一行会提示:

System.InvalidOperationException: '不存在此行/列的数据。'

但实际上出现上面问题崩溃时,查看dtReader是可以看到里面有数据的。然后改成索引也是一样:

int tableid = (int)dtReader[0];

有时候成功,有时候失败崩溃。

通过查看帮助说明,有大致这样的描述:如果是流,在读取时可能数据还未到达。

这个意思就是在执行完语句之后立即获取其中的数据,有可能数据流还未到达,所以这个读取就会失败,也就是“列”还不存在导致崩溃。为了解决这个问题,必需先Read()一次:

dtReader.Read();

int tableid = (int)dtReader["ID"];

添加Read()之后,问题解决。

http://www.xdnf.cn/news/301555.html

相关文章:

  • Blender 初学者指南 以及模型格式怎么下载
  • FPGA----基于ZYNQ 7020实现petalinux并运行一个程序
  • 赛灵思 XCZU11EG-2FFVC1760I XilinxFPGAZynq UltraScale+ MPSoC EG
  • 探索Hello Robot开源移动操作机器人Stretch 3的新技术亮点与市场定位
  • 在 GitLab 中部署Python定时任务
  • 在与大语言模型交互中的礼貌现象:技术影响、社会行为与文化意义的多维度探讨
  • 告别异步复杂性?JDK 21 虚拟线程让高并发编程重回简单
  • Webview通信系统学习指南
  • 基于C++的IOT网关和平台7:github项目ctGateway设备协议开发指南
  • 点分治解析
  • Spark,配置hadoop集群1
  • Spring AI Alibaba-03- Spring AI + DeepSeek-R1 + ES/Milvus + RAG 智能对话应用开发全流程
  • 从黔西游船侧翻事件看极端天气预警的科技防线——疾风气象大模型如何实现精准防御?
  • 微服务框架中@FeignClient远程调用,请求无法携带问题处理
  • 【工具】解析URL获取实际图片地址下载原始FFHQ图像
  • 如何将本地 Jar 包安装到 Maven 仓库(以 Aspose 为例)
  • 小芯片大战略:Chiplet技术如何重构全球半导体竞争格局?
  • aws平台windows虚拟机扩容
  • Eigen矩阵的平移,旋转,缩放
  • 制造企业PLM系统成本基准:2025年预算分配与资源成本率的5种优化模型
  • AI智能体|扣子(Coze)实战【天气查询插件开发教程】
  • IAA-Net:一种实孔径扫描雷达迭代自适应角超分辨成像方法——论文阅读
  • centos的根目录占了大量空间怎么办
  • nut-list和nut-swipe搭配:nut-cell侧滑定义无法冒泡打开及bug(含代码、案例、截图)
  • 高并发PHP部署演进:从虚拟机到K8S的DevOps实践优化
  • 1. 视频基础知识
  • Java高频面试之并发编程-12
  • 详细教程:如何在vs code里面给普通的HTML搭建局域网服务器给其他设备访问
  • react-14defaultValue(仅在首次渲染时生效)和value(受 React 状态控制)
  • vue项目中渲染markdown并处理报错