SQL Server下的Recordset

wangxian 2000-08-19 11:17:00
本人用Recordset的一个继承类绑定了一个表table1,然后在程序中使用
Rs.open(CRecordset::dynaset,"select l01 from table1");
然后通过Rs.GetFieldValue("l01",m_l01);
得到该列的值,在Access下无问题,但当通过ODBC连接SQL SERVER时总是出现“无效的索引符描述”错误,望高手指点。
...全文
206 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangxian 2000-08-22
  • 打赏
  • 举报
回复
但直接使用CRecordset会产生没有绑定列的错误!
zzf 2000-08-22
  • 打赏
  • 举报
回复
为什么不用CRecordset的IsFieldNull方法判断某个字段是否为NULL呢?
boneheat 2000-08-20
  • 打赏
  • 举报
回复
我很奇怪你为什么要使用GetFieldValue()这个函数?
CRecordSet在使用ClassWaizzad后会自动生成数据库字段的相应的成员变量如m_101.
SQL_SERVER在用CRecordSet打开ODBC时,dynaset(动态集)是没有用的,应用snapshot(快照)。使用CRecordSet时,继承类中有一个函数GetDefaultSQL()为你绑定了表名,所以你的打开数据库函数可以写为 Rs.open()即可。如有条件查询,最好在open()之前使用m_strFilter变量。另外,Visaul Devlop Studio 6.0 中的VC关于数据库编程时,其Dedug版的DLL是不稳定的,应直接使用Release版.我曾用VC编过数据库应用,吃了不少苦头。我认为VC不适合以编数据库应用。不然单数据库游标的控制就要写大量的代码。且CRecordSet使用ODBC时效率低下,不信你试一下Open()一个10万条记录的表时要花多长时间,花多少资源。SQL_Server7.0用ODBC编程也是不合适的,应用OLDDB这个接口。
wangxian 2000-08-20
  • 打赏
  • 举报
回复
之所以用GetFieldValue是因为当某一字段为NULL时,用Rs.m_L01会出错。
zzh 2000-08-20
  • 打赏
  • 举报
回复
错,用ODBC来连接SQLSERVER是性能最好的。如果你是用ClassWizard派生的类,在打开数据库后,不用再使用GetFieldValue()函数来取值了,可以直接使用Rs.m_101,这个值就是该字段中中记录的值,可以用MoveNext()来获取下条记录的值。如果直接使用CRecordset,这才需要使用GetFieldValue来读取数据值。你可以这样,
声明一个变量CString str;
Rs.GetFieldValue("101",str);这样值就包括在str中了,然后再转换为你需要的类型就可以了。如果还有问题,可以参考开发中心里面的有关数据库编程的文章。

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧