首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

对ACCESS数据库操作时报错:“由于表'partall'正被别的用户或进程使用,数据库引擎无法锁定它”?该如何处理

2012-01-29 
对ACCESS数据库操作时报错:“由于表partall正被别的用户或进程使用,数据库引擎无法锁定它”??数据库名为pa

对ACCESS数据库操作时报错:“由于表'partall'正被别的用户或进程使用,数据库引擎无法锁定它”??
数据库名为part.mdb,其中有一数据表名为partall,我是这样引入的:
void   CMyView::InitDb()
{
        AfxOleInit();  
        m_pConnection.CreateInstance(__uuidof(Connection));

        try   //   打开本地Access库part.mdb
        {
  m_pConnection-> Open( "Provider=Microsoft.Jet.OLEDB.4.0;Data   Source=part.mdb ", " ", " ",adModeUnknown);
          }
          catch(_com_error   e)
          {
  AfxMessageBox( "数据库连接失败,确认part.mdb是否在当前路径下! ");   }

          pvrdbRecordset.CreateInstance(__uuidof(Recordset));     //   读取数据库

            try
            {
  pvrdbRecordset-> Open( "SELECT   *   FROM   partall ",   m_pConnection.   GetInterfacePtr()   ,   adOpenDynamic,   adLockOptimistic,   adCmdText);
              }
              catch(_com_error   *e)
              {
  AfxMessageBox(e-> ErrorMessage());
              }
}

然后我对数据库表进行操作,如删除数据表partall中的material列:
CString   strSQL   =   "alter   table   partall   drop   column   material ";
m_pDatabase-> ExecuteSQL(strSQL);

则报错,错误如题所示。

哪位大侠知道,请告知,谢谢先。


[解决办法]
pvrdbRecordset-> Close();
你打开了记录集,却不关闭?


[解决办法]
pvrdbRecordset-> Close();
例如:
CString sql;
CString Type;
sql= "SELECT Distinct(文件类型描述) FROM Type ";

try
{
m_pRecordset.CreateInstance( "ADODB.Recordset ");
m_pRecordset-> Open((_variant_t)sql,_variant_t((IDispatch*)(this-> m_pConnection),true),adOpenStatic,adLockOptimistic,adCmdText);
while(!m_pRecordset-> adoEOF)
{


Type=(LPCTSTR)(_bstr_t)m_pRecordset-> GetCollect( "文件类型描述 ");
m_tree.InsertItem(Type,item3);
m_pRecordset-> MoveNext();

}

m_pRecordset-> Close();


}

catch(_com_error e)///捕捉异常
{
CATCH_ERROR;
return false;
}
[解决办法]
记录集没有关闭
[解决办法]
pvrdbRecordset-> Close();记录集没有关闭

热点排行