我正在使用 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);
}
任何反馈?