Procédure : spécifier l'emplacement de la base de données temporaire à l'aide d'OLE DB (par programme)
Dans cette rubrique, vous allez apprendre à définir l'emplacement et la taille du fichier de base de données temporaire lors de la programmation d'une application OLE DB dans Visual C++. Vous pouvez définir l'emplacement de la base de données temporaire en spécifiant la propriété DBPROP_SSCE_TEMPFILE_DIRECTORY lorsque la source de données est initialisée ou que la méthode ISSCECompact::Compact est exécutée. Vous définissez la taille de la base de données en spécifiant la propriété DBPROP_SSCE_TEMPFILE_MAX_SIZE.
Exemple
L'exemple ci-dessous illustre comment spécifier un répertoire de base de données temporaire en spécifiant la propriété DBPROP_SSCE_TEMPFILE_DIRECTORY lors de l'appel de IDBProperties::SetProperties.
// Object declarations
HRESULT hr = NOERROR;
DBPROPSET dbpropset[2];
DBPROP dbprop[1];
DBPROP sscedbprop[1];
// Declare the provider interfaces.
IDBInitialize * pIDBInitialize = NULL;
IDBProperties * pIDBProperties = NULL;
// Initialize the data source.
hr = CoCreateInstance(CLSID_SQLSERVERCE, 0, CLSCTX_INPROC_SERVER,
IID_IDBInitialize, (void**) &pIDBInitialize);
if (FAILED(hr))
{
//Send an error-specific message and do error handling.
goto Exit;
}
// Initialize property structures
VariantInit(&dbprop[0].vValue);
VariantInit(&sscedbprop[0].vValue);
// Initialize Property with name of database.
dbprop[0].dwPropertyID = DBPROP_INIT_DATASOURCE;
dbprop[0].dwOptions = DBPROPOPTIONS_REQUIRED;
dbprop[0].vValue.vt = VT_BSTR;
dbprop[0].vValue.bstrVal = SysAllocString(L"MyDB.sdf");
if(NULL == dbprop[0].vValue.bstrVal)
{
hr = E_OUTOFMEMORY;
goto Exit;
}
// Second property set has one property that contains the provider-specific
// property to specify an alternative temp file directory.
sscedbprop[0].dwPropertyID = DBPROP_SSCE_TEMPFILE_DIRECTORY;
sscedbprop[0].vValue.vt = VT_BSTR;
sscedbprop[0].vValue.bstrVal = SysAllocString(L"\\NewTempDir");
if(NULL == dbprop[0].vValue.bstrVal)
{
hr = E_OUTOFMEMORY;
goto Exit;
}
// Initialize property set.
dbpropset[0].guidPropertySet = DBPROPSET_DBINIT;
dbpropset[0].rgProperties = dbprop;
dbpropset[0].cProperties = sizeof(dbprop)/sizeof(dbprop[0]);
// Initialize the provider-specific property set.
dbpropset[1].guidPropertySet = DBPROPSET_SSCE_DBINIT;
dbpropset[1].rgProperties = sscedbprop;
dbpropset[1].cProperties = sizeof(sscedbprop)/sizeof(sscedbprop[0]);
// Set the properties into the provider's data source object.
pIDBInitialize->QueryInterface(IID_IDBProperties,(void**)&pIDBProperties);
hr = pIDBProperties->SetProperties(sizeof(dbpropset)/sizeof(dbpropset[0]),
dbpropset);
if(FAILED(hr))
{
goto Exit;
}
// Initialize the data source.
hr = pIDBInitialize->Initialize();
if(FAILED(hr))
{
goto Exit;
}
Exit:
//Clean up resources here
return;