ADO问题急问

lidongri 2008-05-22 10:41:48
请教各位,在ADO中有SQL语句长度的限制吗?
select a.cid as subCode, b.cname as subName,
c.cname as mainName, c.ccode as mianCode, a.pid as productID,
p.pname as productName, e.ediscountrate as eDiscountRate,
p.pPrice as pPrice, p.pimagePath as pImagePath,
p.pSmallImage as pSmallImage
from [search] a, [cate] b, [cate] c, [product] p
left join [product_ext] e on e.eid = p.eid
and e.eleavingamount>0
where kid = 12258 and b.ccode=a.cid
and c.ccode=b.cParentCode and p.pid=a.pid
and p.pCategoryCode=a.cid order by b.ccode, c.ccode


上面是我执行的sql语句,使用下面的语句可以获得记录集的条数,也就是说,执行成功了。
long count = m_pRecordset->GetRecordCount();

在执行MoveNext或MoveFirst的时候有时候会出现
Warning: MoveFirst 方法发生异常. 错误信息: IDispatch error #3107;
看RP,有时候是next有时候是first,但是肯定会发生一个。
在执行其他查询的时候是正确的,如
select * from search_list;
可以得到相关的值
但是执行最上面的语句就不行
急问达人给个主意,急!!!!
...全文
169 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
fanggao175 2008-05-23
  • 打赏
  • 举报
回复
【程序员技术论坛10132922】
lidongri 2008-05-22
  • 打赏
  • 举报
回复
LS,这个KID我是显示指定的
因为kid=12258是绝对有结果的,便于调试

where与order之间要加空格,这是是我的疏忽,但是加与不加,结果是一样的。。。
麻烦你了
快乐鹦鹉 2008-05-22
  • 打赏
  • 举报
回复
"WHERE (a.kid = 12258)"
"ORDER BY b.ccode, mianCode",
===这两句间好像少了空格,会形成 12258)ORDER BY 这样子吧。

而且这肯定不是你原始语句,因为你的串中没有%号阿,kid怎么替入呢?
lidongri 2008-05-22
  • 打赏
  • 举报
回复
sqlStr.Format(
"SELECT a.cid AS subCode, b.cname AS subName, c.cname AS mainName, "
"c.ccode AS mianCode, a.pid AS productID, p.pName AS productName, "
"e.eDiscountRate, p.pPrice, p.pImagePath, p.pSmallImage "
"FROM search AS a INNER JOIN "
"cate AS b ON a.cid = b.ccode INNER JOIN "
"cate AS c ON b.cparentcode = c.ccode INNER JOIN "
"product AS p LEFT OUTER JOIN "
"product_ext AS e ON e.eid = p.eid AND e.eLeavingAmount > 0 ON a.pid = p.pid AND a.cid = p.pCategoryCode "
"WHERE (a.kid = 12258)"
"ORDER BY b.ccode, mianCode",
kid
);
---
谢谢各位。。
以上就是我的CString 内容
我是拷贝这个串到sqlserver里执行,结果是正确的。
shakaqrj 2008-05-22
  • 打赏
  • 举报
回复
Move(i,adBookmarkFirst)
shakaqrj 2008-05-22
  • 打赏
  • 举报
回复

把你的sql放到数据库中执行看看
快乐鹦鹉 2008-05-22
  • 打赏
  • 举报
回复
你最好把你形成sql语句的代码贴出来。你问题中串是你自己编出来的。
wshcdr 2008-05-22
  • 打赏
  • 举报
回复
UP
lidongri 2008-05-22
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 shakaqrj 的回复:]
有时候movenext也出错??
还是只有move其他的时候出错?

用try{}catch(_com_error e){MessageBox(e.description());}
[/Quote]
--
用了,确定是在那个地方产生的错误。

在执行MoveNext或MoveFirst的时候有时候会出现
Warning: MoveFirst 方法发生异常. 错误信息: IDispatch error #3107;
-------------------------
现在我改用另一种方法
for (int i=0; i<recordSet->GetRecordCount(); i++)
{
recordSet->Move(i);
.....//获取字段的值
}
这样基本正确,但是前两条或1条是没数据的
如果总的记录个数《2,则成功
如果》2 则有1条或两条没数据
shakaqrj 2008-05-22
  • 打赏
  • 举报
回复
有时候movenext也出错??
还是只有move其他的时候出错?

用try{}catch(_com_error e){MessageBox(e.description());}
lidongri 2008-05-22
  • 打赏
  • 举报
回复
"WHERE (a.kid = 12258)"
不好意思,应该是a的kid
快乐鹦鹉 2008-05-22
  • 打赏
  • 举报
回复
kid从哪里还的?其它字段都是table.key,只有kid没有
lidongri 2008-05-22
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 shakaqrj 的回复:]
你的m_pRecordset是如何得到的?
[/Quote]
m_pRecord = new C_RecordSet(m_pConnection);
一个封装类里的记录集
这个记录集类用了N久了
问题可能处在sql语句里,可是找不到问题点
lidongri 2008-05-22
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 happyparrot 的回复:]
kid = 12258 ===这是啥?没有看到kid啊。

上面是我执行的sql语句,使用下面的语句可以获得记录集的条数,也就是说,执行成功了。
long count = m_pRecordset->GetRecordCount();
===通过这个函数,你得到的count为1吧。不能根据这个函数来判断返回条数的。还是你的SQL语句不正确。
[/Quote]
我的语句在sqlserver里执行返回是15条数据,在程序中也是正确的返回了15这个数字
可是在执行movenext的时候是不对的
shakaqrj 2008-05-22
  • 打赏
  • 举报
回复
你的m_pRecordset是如何得到的?
快乐鹦鹉 2008-05-22
  • 打赏
  • 举报
回复
kid = 12258 ===这是啥?没有看到kid啊。

上面是我执行的sql语句,使用下面的语句可以获得记录集的条数,也就是说,执行成功了。
long count = m_pRecordset->GetRecordCount();
===通过这个函数,你得到的count为1吧。不能根据这个函数来判断返回条数的。还是你的SQL语句不正确。
lidongri 2008-05-22
  • 打赏
  • 举报
回复
OK,搞定了。。
还是语句的问题
改策略后就好了。。
但是那个语句还是没有解决
先干活了,谢了。。。
lidongri 2008-05-22
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 shakaqrj 的回复:]
try{}catch(_com_error e){MessageBox(e.description());}
抱什么错?
[/Quote]
行句柄引用了一个已被删除的行或被标识为删除的行
---
这个错误报的莫名其妙。。
在数据库里使用都没问题的。。
在程序里就说这个,不明白
lidongri 2008-05-22
  • 打赏
  • 举报
回复
行句柄引用了一个已被删除的行或被标识为删除的行。
scq2099yt 2008-05-22
  • 打赏
  • 举报
回复
IDispatch error #3107;
这个错误不一定是长度的问题,如果你的连接字符串写得不对也会出现这个问题
或者记录集查询错误也会出现。
加载更多回复(5)

4,011

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 数据库
社区管理员
  • 数据库
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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