建立连接¶
使用神通数据库 OLE DB时,用户(consumer)必须调用CoCreateInstance创建一个数据源对象。每个OLE DB都有一个唯一的类标示符。对于神通数据库 OLE DB,类标示符是CLSID_OSCAROLEDB = {}。
数据源对象提供IDBProperties接口,通过它用户可以设置一些基本的认证信息, 比如数据库服务器地址,数据库名,用户名和密码等。 数据源对象还提供IDBInitialize接口。属性已经设置后, 通过调用IDBinitialize::Initialize方法将建立与指定数据库的一个连接。 下面以一个代码片断作为例子。
void InitializeAndEstablishConnection()
{
//Initialize the COM library.
CoInitialize(NULL);
//Obtain access to the SHENTONG OLE DB provider.
hr = CoCreateInstance(CLSID_OSCAROLEDB,
NULL,
CLSCTX_INPROC_SERVER,
IID_IDBInitialize,
(void **) &pIDBInitialize);
/*
Initialize the property values needed
to establish the connection.
*/
for (i = 0; i < 4; i++)
VariantInit(&InitProperties[i].vValue);
//Server name.
InitProperties[0].dwPropertyID = DBPROP_INIT_LOCATION;
InitProperties[0].vValue.vt = VT_BSTR;
InitProperties[0].vValue.bstrVal=
SysAllocString(L"Server IP");
InitProperties[0].dwOptions = DBPROPOPTIONS_REQUIRED;
InitProperties[0].colid = DB_NULLID;
//Database.
InitProperties[1].dwPropertyID = DBPROP_INIT_ DATASOURCE;
InitProperties[1].vValue.vt = VT_BSTR;
InitProperties[1].vValue.bstrVal= SysAllocString(L"database");
InitProperties[1].dwOptions = DBPROPOPTIONS_REQUIRED;
InitProperties[1].colid = DB_NULLID;
//Username (login).
InitProperties[2].dwPropertyID = DBPROP_AUTH_USERID;
InitProperties[2].vValue.vt = VT_BSTR;
InitProperties[2].vValue.bstrVal= SysAllocString(L"system ");
InitProperties[2].dwOptions = DBPROPOPTIONS_REQUIRED;
InitProperties[2].colid = DB_NULLID;
//Password.
InitProperties[3].dwPropertyID = DBPROP_AUTH_PASSWORD;
InitProperties[3].vValue.vt = VT_BSTR;
InitProperties[3].vValue.bstrVal= SysAllocString(L" szoscar55");
InitProperties[3].dwOptions = DBPROPOPTIONS_REQUIRED;
InitProperties[3].colid = DB_NULLID;
/*
Construct the DBPROPSET structure(rgInitPropSet). The
DBPROPSET structure is used to pass an array of DBPROP
structures (InitProperties) to the SetProperties method.
*/
rgInitPropSet[0].guidPropertySet = DBPROPSET_DBINIT;
rgInitPropSet[0].cProperties = 4;
rgInitPropSet[0].rgProperties = InitProperties;
//Set initialization properties.
hr = pIDBInitialize->QueryInterface(IID_IDBProperties,
(void **)&pIDBProperties);
hr = pIDBProperties->SetProperties(1, rgInitPropSet);
pIDBProperties->Release();
//Now establish the connection to the data source.
pIDBInitialize->Initialize()
}
如果用户在ADO中连接神通数据库,连接字串的形式为:
DATA SOURCE = dbname; LOCATION=serverlocation; USERID=id; PASSWORD=xxx;
例如:
"DATA SOURCE=OSRDB; LOCATION=192.9.200.100;USERID=SYSDBA;PASSWORD=szoscar55;"