如何:以 OLE DB 開啟資料庫時設定檔案模式 (以程式設計的方式)

在此主題中,您將學習如何在使用 SQL Server Compact 4.0 的 OLE DB 提供者開啟 Microsoft SQL Server Compact 4.0 資料庫時,設定檔案模式。若要在資料庫開啟時設定模式,請使用 DBPROP_INIT_MODE 屬性。下表定義檔案模式的有效值︰

定義

DB_MODE_READ

讓您開啟一份唯讀資料庫。

DB_MODE_WRITE

讓您開啟資料庫的唯寫複本。

DB_MODE_READWRITE

允許多重處理程序開啟及修改資料庫。

DB_MODE_SHARE_DENY_READ

防止其他人以讀取模式開啟。

DB_MODE_SHARE_DENY_WRITE

防止其他人以寫入模式開啟。

DB_MODE_SHARE_EXCLUSIVE

防止其他人以讀取/寫入模式開啟 (DB_MODE_SHARE_DENY_READ | DB_MODE_SHARE_DENY_WRITE)。

DB_MODE_SHARE_DENY_NONE

不拒絕其他人的讀取或寫入存取。

注意

當您開啟位於檔案共用的資料庫時,唯一可使用的選項是 DB_MODE_SHARE_EXCLUSIVE 檔案模式。在網路共用上讀取和寫入 SQL Server Compact 資料庫只能從一個處理序執行。在該處理序中,可以開啟多重連接。例如,第一個連接可以執行 Insert 作業,第二個連接則可執行 Select 查詢。不過,兩個不同的連接無法使用 SQL Server Compact 來存取網路共用上相同的 .sdf 檔案。第二個連接將會收到檔案共用違規錯誤。

範例

下列程式碼顯示如何使用 SQL Server Compact 的 OLE DB 提供者設定檔案模式。

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;
}