방법: OLE DB를 사용하여 데이터베이스 생성(프로그래밍 방식)

SQL Server 2005 Compact Edition(SQL Server Compact Edition)용 OLE DB 공급자이며 SQL Server Compact Edition 에서 데이터베이스를 생성 및 관리할 수 있는 IDBDataSourceAdmin 인터페이스를 표시합니다. 새 데이터베이스를 만들려면 DBPROP_INIT_DATASOURCE 속성을 통해 데이터베이스의 이름을 지정합니다.

자세한 내용은 OLE DB를 사용한 데이터베이스 생성을 참조하십시오.

다음 예에서는 SQL Server Compact Edition 용 OLE DB 공급자를 사용하여 암호화된 데이터베이스를 만드는 방법을 보여 줍니다. 암호로 보호된 데이터베이스나 표준 데이터베이스만 만들려면 불필요한 DBPROP 구조를 제거합니다.

// Object declarations
HRESULT            hr                   = NOERROR; 
DBPROPSET          dbpropset[2]; 
DBPROP             dbprop[1]; // Property array to initialize the provider.
DBPROP             sscedbprop[2]; // Property array for SSCE security properties
INT                i                    = 0;
IDBDataSourceAdmin *pIDBDataSourceAdmin = NULL; 
IUnknown           *pIUnknownSession    = NULL;

// Create an instance of the OLE DB provider.
hr = CoCreateInstance( CLSID_SQLSERVERCE_3_0, 0, CLSCTX_INPROC_SERVER, 
    IID_IDBDataSourceAdmin, (void**)& pIDBDataSourceAdmin);
if(FAILED(hr))
{
    goto Exit;
}

// Initialize property structures.
VariantInit(&dbprop[0].vValue);
for (int i = 0; i < sizeof(sscedbprop) / sizeof(sscedbprop[0]); i++)
{
    VariantInit(&sscedbprop[i].vValue);
}

// Specify the property with name of the database.
dbprop[0].dwPropertyID  = DBPROP_INIT_DATASOURCE;
dbprop[0].dwOptions   = DBPROPOPTIONS_REQUIRED;
dbprop[0].vValue.vt   = VT_BSTR;
dbprop[0].vValue.bstrVal = SysAllocString(L"NewDatabase.sdf"); 
if(NULL == dbprop[0].vValue.bstrVal)
{
    hr = E_OUTOFMEMORY;
    goto Exit;
}

// Specify the property for encryption. 
sscedbprop[0].dwPropertyID = DBPROP_SSCE_ENCRYPTDATABASE;
sscedbprop[0].dwOptions = DBPROPOPTIONS_REQUIRED;
sscedbprop[0].vValue.vt = VT_BOOL;
sscedbprop[0].vValue.boolVal = VARIANT_TRUE;

// Specify the password.
sscedbprop[1].dwPropertyID = DBPROP_SSCE_DBPASSWORD;
sscedbprop[1].dwOptions = DBPROPOPTIONS_REQUIRED;
sscedbprop[1].vValue.vt = VT_BSTR;
sscedbprop[1].vValue.bstrVal = SysAllocString(L"mypassword");
if(NULL == sscedbprop[1].vValue.bstrVal)
{
    hr = E_OUTOFMEMORY;
    goto Exit;
}

// Initialize the property sets.
dbpropset[0].guidPropertySet = DBPROPSET_DBINIT;
dbpropset[0].rgProperties  = dbprop;
dbpropset[0].cProperties  = sizeof(dbprop)/sizeof(dbprop[0]);

dbpropset[1].guidPropertySet = DBPROPSET_SSCE_DBINIT ;
dbpropset[1].rgProperties  = sscedbprop;
dbpropset[1].cProperties  = sizeof(sscedbprop)/sizeof(sscedbprop[0]);

// Create and initialize the database.
hr = pIDBDataSourceAdmin->CreateDataSource(sizeof(dbpropset)/sizeof(dbpropset[0]),
    dbpropset, NULL, IID_IUnknown, &pIUnknownSession);
if(FAILED(hr)) 
{
    goto Exit;
}
// At this point, the new encrypted database is created.

Exit:
// Do cleanup tasks here.

return;

참고 항목

도움말 및 정보

SQL Server Compact Edition 지원 정보 보기