1

我正在使用 ACE 数据库驱动程序。我正在使用 ADOX 创建访问数据库,并尝试使用 SQL 命令插入数据。当文件名使用 .mdb 扩展名时,它在使用 .accdb 时不起作用。我正在使用 x64 ace 驱动程序

    //create new database
PMString connectString("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=");
connectString += getFileName().c_str();
ADOX::_CatalogPtr pCatalog(__uuidof(ADOX::Catalog));
try{
    pCatalog->Create(connectString.c_str());
}catch( _com_error &e){
    throw dymexexception("Error creating table");
}


    //init connection
HRESULT hr = CoInitialize(NULL);
if (FAILED(hr))
    throw dymexexception("Failed to initialize database");
hr = pConnection.CreateInstance(__uuidof(Connection));
if (FAILED(hr))
    throw dymexexception("Failed to initialize database");
hr = pConnection->Open(connectString.c_str(),"","",0);
if(FAILED(hr))
    throw dymexexception("Failed to initialize database");

这是插入部分

        //build sql insert query and execute it
    queryString = "INSERT INTO " + tableName + " VALUES(";
    for(int i=0;i<fieldValues.size();i++)
    {
        if(i>0)
            queryString += ",";
        queryString += fieldValues[i];
    }
    queryString += ")";
    executeSqlCmd(pCommand,queryString);

这是 executeSqlCmd 函数

AdoNS::_RecordsetPtr ResultDatabase::executeSqlCmd(AdoNS::_CommandPtr pCommand,      PMString queryString)
{
pCommand->CommandText = (_bstr_t) queryString.c_str();
return pCommand->Execute(NULL,NULL,NULL);
}

任何反馈?

4

0 回答 0