VC++使用ActiveX控件连接和操作数据库

VC++使用ActiveX控件连接和操作数据库——转载
2011-10-24 19:51

VS2008运用ActiveX控件连接和操作数据库关闭时一直有个内存释放的错误,好像使用VC6.0会多生成2个文件,就不会有问题。

VC++使用ActiveX控件连接和操作数据库的方法分两种:

1.通过属性窗口连接数据库
2.通过代码连接数据库

1.通过属性窗口连接数据库
基本步骤:
(1)创建一个基于对话框的应用程序ActiveXDB;

(2)添加CAdodc控件:对话框上右键单击,选择Insert ActiveX control菜单项,弹出的对话框中选择Microsoft ADO Data Control version 6.0 , 单击"ok"按钮,成功添加一个CAdodc控件。

(3)使用CAdodc控件:首先需要连接数据库,然后传递SQL语句操作数据表。CAdodc控件右键属性,control中,点击use connection string,用build 设置一下。RecordSource中选择1-adCmdText,下面的框输入SQL执行语句。

(4)添加DATAGrid控件:对话框上右键单击,选择Insert ActiveX control菜单项,弹出的对话框中选择Microsoft DataGrid Control version 6.0 , 单击"ok"按钮,成功添加一个DATAGrid控件。

(5)使用DATAGrid控件显示数据集数据:DATAGrid控件通常与CAdodc控件或ADO对象Rescordset一起使用。因为上面 创建好CAdodc控件,可以通过DataGrid控件的属性窗口将其绑定到CAdodc对象上。鼠标右键单击DATAGrid控件,点Edit DataGrid Object 菜单项,打开属性窗口;再选择“ALL”选项卡,选中DataSource属性,在Value列中单击,在显示的组合框中选择CAdodc控件的ID号。 这样,DataGrid控件就关联到了CAdodc控件,即DATAGrid控件可以显示CAdodc控件对应的数据集数据。


2.通过代码连接数据库

基本步骤
(1)创建一个基于对话框的应用程序ActiveXDB;
(2)添加CAdodc控件,建立对应的控件变量m_adodc;添加DATAGrid控件,建立对应的控件变量m_adodc;属性不设置;
(3)控件所在的对话框,对应的cpp文件中OnInitDialog()函数,添加如下代码:
BOOL CActiveXDBDlg::OnInitDialog()
{
……
m_adodc.SetConnectionString("Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=suntest;Data Source=WWW-ED1F301E78B;Persist Security Info=False"); 
CString sql = "select * from 仓库3 order by 仓库编号 desc";
m_adodc.SetRecordSource(sql);
m_adodc.Refresh();

m_grid.SetRefDataSource(m_adodc.GetControlUnknown());
……
return TRUE; 
}

Note:
网上和书上很多写的是m_adodc.GetRecordset(),用VC++编译出现错误提示:cannot convert parameter 1 from 'class C_Recordset' to 'struct IUnknown *'
原因:m_adodc.GetRecordset()的返回值是C_Recordset类型,而m_grid.SetRefDataSource(IUnknown *) 需要传入的参数是IUnknown 结构体,导致类型不匹配出错.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值