"无效的描述符索引"解决方法

限时加码!20+主流AI编程工具免费用 购周边加赠Coding Plan Lite,Claude Code、Cursor等即刻畅享,学习进阶更高效! 阅读详情

一、读取信息的顺序不一致

原因:这也是最容易犯的错误,主要是由于用户在编程环境里面引用的字段顺序与数据库建表的字段顺序不一致导致:

下面是网友的几种解决方案:

网友1:

Microsoft][ODBC SQL Server Driver]无效的描述符索引问题的解决
在jsp对sqlserver数据库进行数据读取的时候,
必须按照表中列名的顺序读取,否则会出现错误

取数据的时候要按照数据库字段的顺序来取
比如数据库 varchar id
          varchar name
          varchar address

取的时候一定要按下面顺序来取:
        rs.getString("id")
        rs.getString("name")
        rs.getString("address")

另外在 vc 中,会生成一个 基于 CRecordSet 的类,在 ***View 中有一个该类型的指针 m_pSet ,在用这个指针

open(strSQL)的 时候,会报错:无效的描述符索引。这还可能是你的 SQL 语句中 SELECT 的字段与

m_pSet 的域变量个数不一致造成的。(当然,前面说的顺序问题也是一个问题)。

 

网友2:

TOMCAT日志报告“无效的描述符索引”,引起这个问题主要原因是连接数据库的时候指针指向错误的列名。

解决办法:在这样的类里,肯定涉及到了数据库的操作,只要把数据库检索的列与下面要使用的列,顺序一一对应即可。

注:最近发现在写纯java程序的时候,编译运行,在命令提示符下也会报告这个错误,看来这个错误不是tomcat的原因,应该是java jdk引起的。如果使用的web 服务器是IBM WebSphere,则不会出现这个错误。

 

网友3:

问题:org.apache.jasper.JasperException: [Microsoft][ODBC SQL Server Driver]无效的描述符索引  

 

org.apache.jasper.JasperException: [Microsoft][ODBC SQL Server Driver]无效的描述符索引
弄了大半天搞得郁闷。终于明白是怎么回事。。

原来是用rs.getXXXX()取字段值时,必须按照select 语句得到的顺序取数据,就这么一点小问题。唉。。。

 

 

二、MFC在添加CRecordset派生类时默认选择了(Bind All Column)

原因:这个是网友最不容易发现和避免的错误,就是在MFC编程时通过"建立类向导"来添加CRecordset派生类时,容易容易忽略的问题:如图

 

网友1:

我用的是sql server2012,用CDataBase类打开一个数据库,用CRecordset的派生类来操作数据,注意了,在添加CRecordset的派生类时选择ODBC数据源时有三个选项"动态集","快照",“绑定所有列”,注意,这个绑定所有列不打勾,你用GetFieldValue就不会报那样问题了,我觉得选择了绑定所在列就意味着你选择了他提供的数据交换功能来访问数据,我这程序还有其他问题,到时有别的发现再来改正

UFS 描述符、标志和属性(一) UFS描述介绍 阅读详情

相关推荐

Linux下的文件描述符

在 Linux 的世界里,一切设备皆文件。对文件的操作都是通过文件描述符(fd)来进行的。Linux 中有7中文件类型:我们可以通过 Il 命令来查看文件类型: **文件描述符相当于非负的索引。**我们可以通过文件描述符操作相应的文件。Linux进程会默认打开三个文件描述符:文件描述符的分配原则:分配出未被占用的最小文件描述符。 一般来说,我们打开文件后占用一个文件描述符3(0、1、2已被标准文件描述符占用),下一个则是4(如果它没被占用的话)… 运行结果: 我们观察上述代码可以发现:同一个进程的不同文件描

xiaobai_xuec的博客 6972

VC_MFC中CRecordset类详解

CRecordset类的详细说明和MFC中使用CRecordset类的详细方法

全局描述符表GDT和局部描述符表LDT

描述符        IA-32架构的处理器访问内存都是采用“段基址:段内偏移地址”的形式,即使到了保护模式也不例外。其次,实模式脆弱的安全性也是保护模式推出的重要原因。为了内存安全性,必须为内存段添加一些额外的安全属性,如特权级、段界限、段类型等。描述内存段属性的据结构就叫段描述符。其结构定义如下所示:        一个段描述符是8字节大小,它描述了一个内存段的地址范围和各种属性。...

程序人生 5670

【SQLSERVER】无效描述符索引问题的解决

问题描述: 如下图我在从本地库的一个表导入到历史库的同样(我以为是一样)的表中的时候,报如下错误:无效描述符索引.导入命令为: master.dbo.XP_CMDSHELL 'BCP KSSC_HIS..T_BOND_BORROW_STOCK IN C:\test\20150101\KSSC_HIS\KSSC_HIS_T_BOND_BORROW_STOCK_20150101 -f C:...

Edidaughter的博客 789

'无效描述符索引'解决方法

[Microsoft][ODBC SQL Server Driver]无效描述符索引  一般出现这个问题是查询语句写为select * from table_a改为select col_1,col_2,col_3 from table_a 然后在相应的java代码里写System.out.println(rs.getString(1);//col_1

Robin的专栏 5671

无效描述符索引

TOMCAT日志报告“无效描述符索引”,这个问题主要是出现在report.java和user.java两个类中,其他的类也有,主要是连接据库的时候指针指向了空值,解决办法:在这样的类里,肯定涉及到了据库的操作,只要把据库检索的列与下面要使用的列,顺序一一对应即可。 

人在旅途 1732

[Microsoft][ODBC SQL Server Driver]无效描述符

<br /><br />JSP读取据库时有时会报出这个错误:<br />[Microsoft][ODBC SQL Server Driver]无效描述符索引<br />原因是你存取的字段顺序和你据库里面的顺序不一致造成的。<br />比如:<br />    据库里面的字段顺序为:sdid   sdname   sdsort   sduptime  sduptime  sdsupplier<br />    如果取出据顺序为:<br />    String id = rs.getString("

EricLiutyy's Area 1324

jsp据库连接中"无效描述符索引"问题的解决

  这几天在用jsp在连接据库时出现了这样一个问题:无效描述符索引.  我以为是上次据库连接时没关掉连接,于是将前面的一个据库连接close掉了.但还是这个问题,于是我重新启动了虚拟服务器:Tomcat,结果依然.最后才发现错误的原因,在这贴出来,给大家参考:  在JSP页面用RS连接据库时如果发生这种错误,就是因为RS取值的时候没有按照据库中字段的顺序. Mi

caohao2008的专栏 1621

文件描述符、文件描述符表、目录项、索引节点之间的总结联系

文件控制块(目录项/FCB):用来存放控制文件需要的各种信息的据结构,以实现“按名存取”。一个FCB就是一个目录项,当创建一个新文件时,系统将分配一个FCB并存放在文件目录中,成为目录项,目录项中包含了文件名+索引节点(inode)指针。 文件描述符:open打开文件到的是一个文件描述符索引号),存放在task_struct据结构(进程控制块)中,将task_struct结构和file结构...

弯弯月牙儿 8425

[Microsoft][ODBC SQL Server Driver]无效描述符索引

在jsp程序中查询语句无法查询出结果,通过 catch(SQLException) {out.print(e.getMessage());} 得到错误提示[Microsoft][ODBC SQL Server Driver]无效描述符索引。 通过在网上查找资料,发现问题原因:使用JDBC-ODBC连接SQLServer,在读取据库据时,必须按照表的列名从左往右的顺序读取,否则会出现错误

laura30的专栏 959

USB 设备描述符 配置描述符 报表描述符

来学习一下 USB 的各种描述符 ...... 矜辰所致

不浮夸,不将就,认真对待学知识的我们 1341

【操作系统】段描述符、全局描述符表和选择子

与实模式不同的是,保护模式下内存段不再是简单地用段寄存器加载一下段基址然后乘以16位结合偏移地址得出实际要访问的内存地址,而是通过选择子在全局描述符表中找到对应的段描述符,CPU从段描述符中提取段基址,再与偏移地址结合得出实际要访问的内存地址。

师兄怎么办 2130

USB字符串描述符(String Descriptor)实战:从索引映射到多语言扩展

本文详细解析USB字符串描述符(String Descriptor)的核心机制,涵盖其标准UTF-16LE编码格式、索引映射原理及多语言扩展实现。通过实战示例和常见问题调试技巧,帮助开发者正确配置厂商、产品名称等字符串信息,确保USB设备在系统中被清晰识别,避免出现Unknown Device等显示问题。

yellow的专栏 1074

索引节点号、文件描述符、句柄在形式上都是一个非负整,它们的机制为何

1、系统给每个索引节点分配了一个号码,(该号码)也就是该节点在索引节点组(即inode table)中的索引号(即组下标号),称为索引节点号。 2、文件描述符在形式上是一个非负整。实际上,它是一个索引(关键)值(或叫索引主键值),指向内核为每一个进程所维护的该进程打开文件的记录表。当程序打开一个现有文件或者创建一个新文件时,内核向进程返回一个文件描述符。在程序设计中,一些涉及底层的

haiross的专栏 1697

每天进步一点点——Linux中的文件描述符与打开文件之间的关系

快速理解文件描述符与进程打开文件之间的关系

Cynric 的博客 12万+

文件描述符详解

相信说到这里大家已经有一些印象了,我们在上面的代码中可以关闭我们的文件,那么在Linux下一切皆文件,我们当然也可以关闭标准输入、标准输出文件了,然后在将我们向显示屏上打印内容的标准输出文件替换成我们别的文件描述符,这样我们不就可以将想写到显示器的内容写到文件里面了嘛。这里是一个简单的重定向代码,我们可以这样大家就可以观察到我们原本是向文件描述符为1的文件中写入,而经过上面证明1是我们的标准输出,本来应该是打印到显示器上面,但是我们一运行这段代码,发现出现了一个文件,并且与其输入的内容出现在文件中。

2301_81817211的博客 1307

USB描述符-如何获取、各描述符关系

如何获取usb设备的功能和行为?这就需要获取USB描述符来实现。USB描述符中记录了设备的类型、厂商ID、和产品ID(通常依靠这些信息来加载对应的驱动程序)、端点情况、版本号等信息。

echo_heart_echo_soul的博客 861

USB2.0学习2--描述符

例如鼠标,当主机给鼠标设备发送请求后,鼠标需要把自己当前信息上报给主机,这个信息是鼠标左移、鼠标右移、鼠标滑轮滚动、鼠标左键、鼠标右键的当前状态据的集合,而鼠标各种各样,有的只有两个按键,有的是七八个按键,这么多类型不一样的鼠标,主机是怎么知道鼠标设备发上来的一堆据(报告)中哪个据代表哪个按键,报告描述符就是用来解决这个问题。主机在获取描述符时,首先获取设备描述符,再获取配置描述符,然后根据配置描述符中的配置集合总长度,一次将配置描述符、接口描述符、类特殊描述符(如果有)、端点描述符一次读回。

原海青木的博客 2051
上一篇: 记录集是只读
下一篇: AfxMessageBox和MessageBox的区别
VR_wangkr
博客等级 码龄14年 168粉丝 61原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值