MFC OLEDB数据库

来源:互联网 发布:晋业通软件怎样使用 编辑:程序博客网 时间:2024/05/26 12:05
class CLinkInfo : public CCommand<CAccessor<CLinkInfoAccessor> >{public:///////////////////////////////////////////////////构造函数CLinkInfo () {//Allow 1 k for SQL WHERE clausememset(m_strFilter, 0, 50);//strcpy (m_strFilter, "");}HRESULT Open(){HRESULThr;hr = OpenDataSource();if (FAILED(hr))return hr;return OpenRowset();}HRESULT OpenDataSource(){HRESULThr;CDataSource db;CDBPropSetdbinit(DBPROPSET_DBINIT);dbinit.AddProperty(DBPROP_AUTH_CACHE_AUTHINFO, true);dbinit.AddProperty(DBPROP_AUTH_ENCRYPT_PASSWORD, false);dbinit.AddProperty(DBPROP_AUTH_MASK_PASSWORD, false);dbinit.AddProperty(DBPROP_AUTH_PASSWORD, OLESTR(""));dbinit.AddProperty(DBPROP_AUTH_USERID, OLESTR("Admin"));dbinit.AddProperty(DBPROP_INIT_DATASOURCE, OLESTR("E:\\AddressBook.mdb"));dbinit.AddProperty(DBPROP_INIT_MODE, (long)16);dbinit.AddProperty(DBPROP_INIT_PROMPT, (short)4);dbinit.AddProperty(DBPROP_INIT_PROVIDERSTRING, OLESTR(""));dbinit.AddProperty(DBPROP_INIT_LCID, (long)1033);hr = db.Open(_T("Microsoft.Jet.OLEDB.4.0"), &dbinit);if (FAILED(hr))return hr;return m_session.Open(db);}HRESULT OpenRowset(){// Set properties for openCDBPropSetpropset(DBPROPSET_ROWSET);propset.AddProperty(DBPROP_IRowsetChange, true);propset.AddProperty(DBPROP_UPDATABILITY, DBPROPVAL_UP_CHANGE | DBPROPVAL_UP_INSERT | DBPROPVAL_UP_DELETE);char newSQL[512];char *SQLCommand;GetDefaultCommand((const char **) &SQLCommand);strcpy(newSQL, SQLCommand);if (strlen(m_strFilter)) {strcat(newSQL, " WHERE ");strcat(newSQL, m_strFilter);}return CCommand<CAccessor<CLinkInfoAccessor> >::Open(m_session, newSQL, &propset);//return CCommand<CAccessor<CLinkInfoAccessor> >::Open(m_session, NULL, &propset);}HRESULT ExecuteSQL(char *sql){// Set properties for openCDBPropSetpropset(DBPROPSET_ROWSET);propset.AddProperty(DBPROP_IRowsetChange, true);propset.AddProperty(DBPROP_UPDATABILITY, DBPROPVAL_UP_CHANGE | DBPROPVAL_UP_INSERT | DBPROPVAL_UP_DELETE);CCommand<CAccessor<CLinkInfoAccessor> >   cmd;HRESULT hr = cmd.Open(m_session, sql, NULL,NULL,DBGUID_SQL, FALSE);return hr;}CSessionm_session;charm_strFilter[50];};void CMyATLOLEDBDlg::ShowItem(CString strFilter){HRESULThr;m_listLinkInfo.DeleteAllItems();//清空listControlCLinkInfo linkInfo;//定义CLinkInfo对象strcpy (linkInfo.m_strFilter, strFilter);//设置过滤器hr = linkInfo.Open();//打开记录集if (FAILED(hr)){::MessageBox(NULL, "打开数据库联系人表失败!", "数据库操作", MB_OK|MB_ICONEXCLAMATION);return;}hr = linkInfo.MoveFirst();if (FAILED(hr))//判断表中是否有记录return;int i=0, j=0;CString strTmp;while (hr == S_OK)//逐条读取记录集中所有记录{m_listLinkInfo.InsertItem(i, linkInfo.m_Name);m_listLinkInfo.SetItemText(i, ++j, linkInfo.m_Phone);m_listLinkInfo.SetItemText(i, ++j, linkInfo.m_Email);m_listLinkInfo.SetItemText(i, ++j, linkInfo.m_Address);m_listLinkInfo.SetItemText(i, ++j, linkInfo.m_Postcode);strTmp.Format("%d", linkInfo.m_PersonID);m_listLinkInfo.SetItemText(i, ++j, strTmp);i++;j=0;hr = linkInfo.MoveNext();//移动到下一条记录}linkInfo.Close();UpdateData(FALSE);}// TODO: Add extra initialization herem_listLinkInfo.SetExtendedStyle(LVS_EX_GRIDLINES|LVS_EX_FULLROWSELECT);   int i=0;m_listLinkInfo.InsertColumn(i++, "姓名",LVCFMT_LEFT, 90);m_listLinkInfo.InsertColumn(i++, "电话",LVCFMT_LEFT, 90);m_listLinkInfo.InsertColumn(i++, "邮件",LVCFMT_LEFT, 100);m_listLinkInfo.InsertColumn(i++, "地址",LVCFMT_LEFT, 120);m_listLinkInfo.InsertColumn(i++, "邮编",LVCFMT_LEFT, 90);m_listLinkInfo.InsertColumn(i++, "ID",LVCFMT_LEFT, 0);m_cmbCondition.SetCurSel(0);ShowItem("");

原创粉丝点击