Невозможно выполнить вставку sql в файл .mdb с помощью драйвера ACE.Работает с файлом .accdb - PullRequest
1 голос
/ 10 июня 2011

Я использую драйвер базы данных 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);
}

Есть какие-либо отзывы?

...