访问文本文件和数据库出现的Acess Violation问题

everambler 2003-10-08 10:18:21
朋友,程序写的多,但实际上不要看具体内容,只要看结构就行了。
我CMySchedulerView类的成员函数OnWritedatatodb()中将数据读出来放进数组中,然后从数组写入数据库。经过我仔细测试,从TXT文件读数据放进数组部分,以及从数组写入数据库部分,如果屏蔽其中任意一部分,另一部分可以正常运行,但是把两部分同时放在这个函数中,结果产生了 Access Violation 错误,程序无法前进。然而,我把int Jmachine_seq[JobNum][MachineNum]、Jmachine_time[JobNum][MachineNum]两个数组由原来的局部变量(函数中被屏蔽的位置)移到外面成为全局变量后(现在的位置),程序居然正常了。
这是什么原因呢?其实两部分只有Jmachine_seq和Jmachine_time两个数组作为联系啊,实在找不出原因,只好向各路高手求援了。
谢谢大家了!

#define FileName "ta6x6.txt"
#define JobNum 6
#define MachineNum 6
int Jmachine_seq[JobNum][MachineNum];
int Jmachine_time[JobNum][MachineNum];

void CMySchedulerView::OnWritedatatodb()
{ //将标准工艺数据从文件读出,写入数据库
// TODO: Add your command handler code here

//先将数据读到数组里
// int Jmachine_seq[JobNum][MachineNum];//???数组放在这里定义就出错:Access Violation???
// int Jmachine_time[JobNum][MachineNum];//???怎么变为全局变量就行呢???
FILE *f = NULL;
if(!(f = fopen(FileName,"r+"))) //"ta10x10.txt" //file_name
{
。。。。。。。。。。
}

fseek( f, 0L, SEEK_SET );//从头开始读写
int i=0;
int j=0;
while(!feof(f))
{
fscanf( f, "%d", &Jmachine_seq[i][j] );
Jmachine_seq[i][j]=Jmachine_seq[i][j]+1;
fscanf( f, "%d", &Jmachine_time[i][j] );
j++;
if(j%MachineNum==0) i++,j=0;
}
fclose(f);

//*******数据库部分************
_RecordsetPtr m_pFields;
try{
m_pFields.CreateInstance("ADODB.Recordset");
m_pFields->Open("SELECT name FROM syscolumns where id = OBJECT_ID('工件工艺路线表_测试10x10')",_variant_t((IDispatch*)m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);
}
catch(_com_error e)///捕捉异常
{
...........
}

//***将读出的数据写到数据库里*****

_RecordsetPtr m_pRecordset;//记录表中的记录
_variant_t vtaskid; //读取工件号
_variant_t vopid; //读取工序号
_variant_t vmachname; //读取加工类型
_variant_t vproctime; //读取标准加工时间
CString taskid,opid,machname;
float proctime;
int m,n;
i=0;
j=0;
try
{
m_pRecordset.CreateInstance("ADODB.Recordset");
//********检索需要的数据**********
m_pRecordset->Open("SELECT * FROM 工件工艺路线表_测试10x10 ORDER BY 工件号 ASC,工序号 ASC", \
_variant_t((IDispatch*)m_pConnection,true),adOpenStatic, \
adLockOptimistic,adCmdText);
------具体操作-------
}
m_pRecordset->Close(); //用完就关了

}
...全文
52 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
smch 2003-10-09
  • 打赏
  • 举报
回复
究竟在那一行报的错?
cy214 2003-10-09
  • 打赏
  • 举报
回复
debug -> 出现错误的时候retry 然后看看call stack 哪块调用导致的出错

16,472

社区成员

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

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

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