Procédure : définir le mode de fichier lors de l'ouverture d'une base de données à l'aide d'OLE DB (par programme)
Dans cette rubrique, vous allez apprendre comment définir le mode de fichier lors de l'ouverture d'une base de données Microsoft SQL Server Compact 4.0 à l'aide du fournisseur OLE DB pour SQL Server Compact 4.0. Pour définir le mode dans lequel la base de données est ouverte, vous utilisez la propriété DBPROP_INIT_MODE. Le tableau suivant définit les valeurs valides pour le mode de fichier :
Valeur |
Définition |
---|---|
DB_MODE_READ |
Vous permet d'ouvrir une copie en lecture seule de la base de données. |
DB_MODE_WRITE |
Vous permet d'ouvrir une copie en écriture seule de la base de données. |
DB_MODE_READWRITE |
Autorise plusieurs processus à ouvrir et à modifier la base de données. |
DB_MODE_SHARE_DENY_READ |
Empêche d'autres utilisateurs d'ouvrir la base de données en mode lecture. |
DB_MODE_SHARE_DENY_WRITE |
Empêche d'autres utilisateurs d'ouvrir la base de données en mode écriture. |
DB_MODE_SHARE_EXCLUSIVE |
Empêche d'autres utilisateurs d'ouvrir la base de données en mode lecture/écriture (DB_MODE_SHARE_DENY_READ | DB_MODE_SHARE_DENY_WRITE). |
DB_MODE_SHARE_DENY_NONE |
Ni l'accès en lecture ni l'accès en écriture ne peuvent être refusés à d'autres utilisateurs. |
Notes
Lorsque vous ouvrez une base de données qui se trouve dans un partage de fichiers, la seule option disponible est le mode de fichier DB_MODE_SHARE_EXCLUSIVE. La lecture et l'écriture d'une base de données SQL Server Compact sur un partage réseau fonctionne à partir d'un seul processus. Au sein de ce processus unique, plusieurs connexions peuvent être ouvertes. Par exemple, une connexion peut effectuer une opération Insert alors qu'une seconde connexion effectue une requête Select. Toutefois, deux connexions distinctes ne peuvent pas utiliser SQL Server Compact pour accéder au même fichier .sdf sur un partage réseau. La seconde connexion recevra une erreur de violation de partage de fichier.
Exemple
Le code ci-dessous illustre la définition du mode de fichier à l'aide du fournisseur OLE DB pour SQL Server Compact.
DBPROPSET dbpropset[1]; // Property Set used to initialize provider
DBPROP dbprop[2]; // Property array used in property set to initialize provider
VariantInit(&dbprop[0].vValue);
VariantInit(&dbprop[1].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;
}
// Initialize property with open mode for database
dbprop[1].dwPropertyID = DBPROP_INIT_MODE;
dbprop[1].dwOptions = DBPROPOPTIONS_REQUIRED;
dbprop[1].vValue.vt = VT_I4;
dbprop[1].vValue.lVal = DB_MODE_READ;
// Initialize property set
dbpropset[0].guidPropertySet = DBPROPSET_DBINIT;
dbpropset[0].rgProperties = dbprop;
dbpropset[0].cProperties = sizeof(dbprop)/sizeof(dbprop[0]);
// Set properties into the provider's DSO object
hr = pIDBProperties->SetProperties(sizeof(dbpropset)/sizeof(dbpropset[0]), dbpropset);
if(FAILED(hr))
{
goto Exit;
}