这个odbc问题不会很难吧,为什么没有人回答,望不吝赐教,发表您的意见,回答者有分。
用odbc写access数据库的最基本问题,我用以下方法操作多个CRecordSet的派生类向access数据库的多个表里写数据,总出现被admin用户锁定无法更新的错误。
是以下写法有错误,还是怀疑其他的没有列出的部分含有错误?
CRecordSet的派生类 m_RouteDB, m_RouteDB2, m_RouteDB3, m_RouteDB4; //(每个派生类都对应一个表)我对这里面每个派生类都进行以下相同的操作:
int m_nstep, callsign, comu_time, end_time;
//////////////////////////////////////////////////////////////
CRecordSet的派生类 m_RouteDB;
............................
1.写数据库:
writeDataBase()
{
try
{
m_RouteDB.Open(CRecordset::dynaset, "SELECT * FROM tlk_RouteBrdcst");
m_RouteDB.AddNew();
m_RouteDB.m_t = m_nstep;
m_RouteDB.m_callsign = callsign;
m_RouteDB.m_comutime = comu_time;
m_RouteDB.m_endtime = end_time;
m_RouteDB.Update();
m_RouteDB.Close();
}
catch(CDBException* e)
{
AfxMessageBox(e->m_strError);
return;
}
}
问题点数:100、回复次数:9Top
1 楼tatu()回复于 2005-07-04 09:02:09 得分 0
看不出这段代码写的有什么错误,比我写的好,学习
btw,你试试写一个表会出错吗?
如果这也出错,那可能是access的什么设置不对了
如果不出错,可能是多个CRecordSet同时操作同一个表了Top
2 楼laiyiling(陌生人[MVP])回复于 2005-07-04 09:15:19 得分 0
一次只更新一个数据库表Top
3 楼ocean69()回复于 2005-07-04 09:28:03 得分 0
我的写法在操作少量数据(1到2000条以下)或者5个以下的表的时候并不出错误,可是以操作5个以上的表舅会出现被admin锁定的错误。
应该时出现了楼上laiyiling(◆陌生人·V2.0◆)大侠所说的错误了,
可是为什么呢?我每次操作完后都用m_RouteDB.Close(); 关闭了该recordset了阿?Top
4 楼tabby(-_-b .. 内存泄漏)回复于 2005-07-07 00:12:33 得分 0
你是不是自己在程序以外已经手动的打开了ACCESS数据库文件在那儿啊??Top
5 楼ocean69()回复于 2005-07-07 17:27:25 得分 0
我没有在程序外打开ACCESS,
每次运行总出现同样的错误。Top
6 楼fly_sky_()回复于 2005-07-09 17:01:42 得分 0
我觉得这样写效率效率不高,每次写都要打开和关闭数据库,在UpDate()前加一句UpdateData(),以下是我的重载OnMove函数内的代码,
if(m_bAddMode)
{
if(!UpdateData())
return false;
TRY
{
m_pSet->Update();
}
CATCH(CDBException,e)
{
AfxMessageBox(e->m_strError);
return false;
}
END_CATCH
m_pSet->Requery();
UpdateData(false);
m_bAddMode=false;
return true;
}
else
{
return CRecordView::OnMove(nIDMoveCommand);
}Top
7 楼ocean69()回复于 2005-07-10 22:29:22 得分 0
楼上的代码没有打开和关闭recordset的码, 我的看法是您操作一个recordset应该没问题,可是你同时操作多个recordset的派生类的时候可能会出现和我一样的问题,recordset被锁定,我没试过,若有不同见解望指正。Top
8 楼fly_sky_()回复于 2005-07-12 17:23:17 得分 0
可以的,可以同时操作多个记录集,如果不能同时操作多个记录集的话,很多数据处理工作就不能进行,可以在一个文档中加入多个记录集对象,在视图中加入对应的指针,这样就可以了,没问题,也可在通过定位你的文档,在任何地方(比如在对话框中)打开你的多个记录集Top
9 楼yvhkdragon(剑客)回复于 2005-07-12 21:06:09 得分 0
程序外打开也不会发生错误的,应该不是这个问题.Top




