网上对这个的说法都是权限问题,但我给Everyone都加上所有权限了,还是不行,代码如下:
CDatabase db;
int iOpenDBRet = OpenMengDb(&db,MENGDSN);
if (iOpenDBRet == 0)
{
return ;
}
try
{
//CString sql = "select * into xx3 from [Paradox 5.X;database=d:\\test].[钢筋计算表.db]";
CString sql = "select * into xx3 from t";
db.ExecuteSQL(sql);

}
#define DBOPENSTREX "DSN=mengTmpDsn;Uid=Administrator;Pwd=;"
int OpenMengDb(CDatabase *db,CString strDSN)
{
//
CString str = "DSN=";
str += strDSN;
int ret;
db->SetLoginTimeout(5000);
try
{
ret=db->OpenEx(str,
CDatabase::openReadOnly | CDatabase::noOdbcDialog);
}
catch(CDBException* e1)
{
CString err;
if(e1->m_nRetCode==-1)
{
// AfxMessageBox("数据库IP地址错,连接失败!");
return 0;
}
else
err.Format("数据库错误:代码%d 内容%s",e1->m_nRetCode,e1->m_strError);
// AfxMessageBox(err);
return 0;
}
return 1;
}

解决方案 »

  1.   

    xx3 和t的表结构字段名称和顺序必须一致。
      

  2.   

    上面说错了,刚用ADO助手测试了在Access2003上是可以的,可以用Ado助手先测试下SQL。
    "select * into xx3 from [Paradox 5.X;database=d:\\test].[钢筋计算表.db]"
    这句在Access中不能执行。
      

  3.   

            ret=db->OpenEx(str,
                CDatabase::openReadOnly | CDatabase::noOdbcDialog);
    CDatabase::openReadOnly只读模式当然不能插入了.
    去掉这个.
      

  4.   

    CDatabase::openReadOnly 楼主自己设置的只读啊。去掉即可。