最近在写一个用OLEDB从SQLSERVER数据库读取数据的VC程序
特将使用的经验总结一下方便未知使用之者
1、首先建立数据库连接问题:
你可以使用以前的CoCreateInstance 建立数据库初始化对象,如下:
CoCreateInstance(_clsid, NULL, CLSCTX_INPROC_SERVER,
IID_IDBInitialize, (void**)&_pDBInit);
但这是一种过时的打开方法,在此基础上建立的数据库连接对象会有很多数据库属性都不会被支持的
微软建议的做法是应该使用IDataInitialize 或者 IDBPromptInitialize 打开 ,如下
hr = CoCreateInstance(CLSID_MSDAINITIALIZE, NULL, CLSCTX_INPROC_SERVER, IID_IDataInitialize, (void**)&_pIDataInitialize);
hr = _pIDataInitialize->CreateDBInstance(_clsid, NULL, CLSCTX_INPROC_SERVER, NULL, IID_IDBInitialize, (IUnknown**)&_pDBInit);
这样的方法建立的数据实例不仅可以利用一些比较新的属性,并且还支持数据连接池
2、数据连接池的问题:
如果你用以前的那种方法打开的数据库连接是需要自己实现连接池的,而后者是自动支持数据连接池,但主要如下事项:
1、要释放所有的接口指针,要记得随时随地release,不然它会认为你还存在引用,就不会自动服用连接了,如下:
_pICT ->SetCommandText(DBGUID_DBSQL, t);