- 1、本文档共80页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
11章 数据库编程 11.2 使 用 ODBC *11.3 使 用 DAO RFX_Long(pFX,_T(id),filterid); 现在建立一个新的对话框资源,此对话框将用于显示E-mail收发记录表中的数据。根据数据库字段在该对话框中建立相应的编辑控件。然后增加四个按钮控件,控件ID分别为:IDC_BUTTON1、IDC_BUTTON2、IDC_BUTTON3、IDC_BUTTON4,按钮标题分别设为Top、Previous、Next、Bottom。 启动ClassWizard建立CTestDialog类,基类为CDialog,Dialog ID为上面建立的对话框模板的ID。在ClassWizard窗口的Class Info页中,选择CTestDialog类,设置Foreign Class 为CErecordSet类,在Foreign Variable中填写m_pSet,然后在Member Varibles页设置对话框中的编辑控件与m_pSet成员之间的关系,方法可参考11.2.3节。 编写四个按钮控件的响应程序如下: void CTestDialog::OnButton1( ) { // TODO: Add your control notification handler code here m_pSet-MoveFirst( ); UpdateData(FALSE); } ? void CTestDialog::OnButton2( ) { // TODO: Add your control notification handler code here m_pSet-MovePrev( ); UpdateData(FALSE); } void CTestDialog::OnButton3( ) { // TODO: Add your control notification handler code here m_pSet-MoveNext( ); UpdateData(FALSE); } void CTestDialog::OnButton4( ) { // TODO: Add your control notification handler code here m_pSet-MoveLast( ); UpdateData(FALSE); } 接下来的主要工作将是如何激活显示E-mail收发记录数据的对话框。可以在原来主菜单的“记录”菜单下增加一项“E-mail记录”,在该菜单的响应程序中激活该对话框。该菜单响应程序的主要内容如下: CTestDialog mydlg; mydlg.m_pSet = new CErecordSet; mydlg.m_pSet-filterid=m_pSet-m_ID; mydlg.m_pSet-Open(AFX_DB_USE_DEFAULT_TYPE); mydlg.DoModal( ); delete mydlg.m_pSet; 现在可以编译执行该程序了。程序的主窗口与前面的地址簿程序相同,但在浏览某一记录时,可通过“E–mail记录” 菜单项在弹出的窗口中查看E-mail收发记录。 多表连接,实际上是根据主表的某一字段对从表的内容进行过滤。上面的程序在查看E-mail收发记录时,只出现主窗口正在浏览的人员的记录。 *11.2.9 直接使用SQL语言 通过CRecordSet类可以完成大多数的查询操作,而且在CRecordSet::Open( )函数中也可以提供SQL语句。但是,有时候还是希望进行一些其它操作,例如建立新表、删除表、建立新的字段等,这时就需要使用CDatabase类直接执行SQL语句的机制。 通过调用CDatabase::ExecuteSQL( )函数来完成SQL语句的直接执行: BOOL CDB::ExecuteSQLAndReportFailure(const CString strSQL) { TRY { m_pdb-ExecuteSQL(strSQL); //直接执行SQL语句 } CATCH (CDBException,e) { CString strMsg; strMsg.LoadString(IDS_EXECUTE_SQL_FAILED); strMsg+=strSQL; return FALSE; } END_CATCH retu
文档评论(0)