请说说下面两种访问数据库的方法的区别与联系?

softrain 2005-02-17 04:39:47
我看微软文档的例子中有两种用ado访问数据库的方法.
一种是mfc程序,使用组件编程接口。典型代码:
ADOConnection* m_piConnection;
ADORecordset* m_piEmpRecordSet;

hr = CoInitialize(NULL);
if (FAILED(hr)) goto ErrorExit;

hr = CoCreateInstance(CLSID_CADOConnection, NULL, CLSCTX_INPROC_SERVER, IID_IADOConnection, (LPVOID *)&m_piConnection);
if (FAILED(hr)) goto ErrorExit;

bstrSource = m_strSource.AllocSysString();
bstrUser = m_strUser.AllocSysString();
bstrPassword = m_strPassword.AllocSysString();
bstrSQL = m_strSQL.AllocSysString();
if ( bstrSource == NULL || bstrUser == NULL || bstrSQL == NULL )
goto ErrorExit;

hr = m_piConnection->Open( bstrSource, bstrUser, bstrPassword, adOpenUnspecified /* -1 */ );

另一种是控制台程序:典型代码:
_RecordsetPtr pRstEmployee = NULL;
_ConnectionPtr pConnection = NULL;
_bstr_t strCnn("Provider=sqloledb;Data Source=MyServer;"
"Initial Catalog=pubs;User Id=sa;Password=;");

// Define Other Variables.
HRESULT hr = S_OK;
IADORecordBinding *picRs = NULL; // Interface Pointer declared.
DBDATE varDate;

TESTHR(pConnection.CreateInstance(__uuidof(Connection)));
pConnection->Open(strCnn,"","",adConnectUnspecified);

TESTHR(pRstEmployee.CreateInstance(__uuidof(Recordset)));
pRstEmployee->Open("Employee",
_variant_t((IDispatch *)pConnection,true), adOpenKeyset,
adLockOptimistic, adCmdTable);
请再详细讲讲这两种方法的优点和缺点。控制台程序也可以使用com对象吗?
...全文
152 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
oyljerry 2005-04-27
  • 打赏
  • 举报
回复
第一种相当于直接通过COM提供的接口来调用
第二种通过指针对象实例
softrain 2005-04-27
  • 打赏
  • 举报
回复
再提出来晒晒
softrain 2005-02-21
  • 打赏
  • 举报
回复
msdn 上讲的是第二种用法

第一种是从CSDN的SAMPLE中查到的,有人能说出来他们分别叫什么用法吗???
xuzheng318 2005-02-18
  • 打赏
  • 举报
回复
Data provider

Set DataGrid1.DataSource = Adodc1
hjunxu 2005-02-18
  • 打赏
  • 举报
回复
mrxwh(大徐) :建议你去MSDN看一下先。
dasiu 2005-02-18
  • 打赏
  • 举报
回复
ADODC的更新UPDATE(VARIANT,VARIANT)中变量的默认数值是什么?如果更新,不带参数为什么提示参数不足?如何解决。。。
hjunxu 2005-02-18
  • 打赏
  • 举报
回复
不是一样的嘛,第一种是封装的第二种实现的。

ADO本来就是COM了,不管是第一种还是第二种。
aonefeng 2005-02-17
  • 打赏
  • 举报
回复
哪位高手能给出注释,我看不懂第一种.只用过第二种,用的是智能指针.
huyuhui123 2005-02-17
  • 打赏
  • 举报
回复
1:首先COM 是一个与语言无关的二元规范,所以你应该知道问题的答案了。
2:这两种方法的区别MSDN 有详细的说明。

4,011

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 数据库
社区管理员
  • 数据库
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧