我编写了一个服务程序。
其中使用了ADO用于将数据库中某个表的数据导出到文件中。
我的表中有10000条记录。
每次导出到第2500条记录后,执行MoveNext()就内存出错。
可是将代码移植到一个非服务程序中,运行正常。请问这是怎么回事?

解决方案 »

  1.   

    服务程序对 ADO 资源的调用是有一些苛刻条件的,10000条数据不算太多,不知道有没有text字段,应该可以一次取出的。
    你先注意一下几点:
    1.char[nn]之类的变量,最好不用,特别是在循环语句中;
    2.一个函数内不要有两次数据库连接操作,比如两个Recordset->Open(...),将一个放到另一个函数中,在这个函数中调用。
    3.注意服务程序中CoInitialize(), CoUninitialize()的使用。
    4.你把错误信息贴出来,也好给你参谋。
      

  2.   

    多谢二位!以下是错误情况。
    服务启动后一段时间,弹出错误窗口,错误信息:
    “0x04c2f35c”指令引用的“0x051f1174”内存。
    该内存不能为“writen”。
    请再帮忙判断一下是什么问题。
    另外,我想知道msdn上是否这方面的说明。
      

  3.   

    我的表中确实有char类型字段,
    程序中也在循环体中使用了char[nn]的变量,
    可是不用不行啊!
      

  4.   

    To sarvio(): 表中确实有char类型字段这根char[nn]变量是两码事,我说的是VC中你声明的变量,如果有char[nn]之类的变量,最好变成动态内存,比如:malloc -- free形式,char[nn]变量很容易出现你说的问题。
    如果是对象,注意new -- delete配合使用。你说的问题很可能是内存泄漏造成的,仔细检查程序,不成的话把程序贴出来,大家看看,出出主意。
      

  5.   

    编译为Debug项目,可能会看到更多的错误信息,有利于找到错误。