📄 chengxu.txt
字号:
BOOL CMyAddrDoc::OnNewDocument()
{
if(!CDocument::OnNewDocument())
return FALSE;
if(m_pSet!=NULL)
{
m_pSet->Close();delete m_pSet;m_pSet=NULL;
}
if(m_pDB!=NULL)
{
m_pDB->Close();
delete m_pDB;
m_pDB=NULL;
}
m_bFileOpen=FALSE;
return TRUE;
}
BOOL CMyAddrDoc::OnOpenDocument(LPCTSTR lpszPathName)
{
if(!CDocument::OnOpenDocument(lpszPathName))
{
AfxMessageBox("数据库位置不对!");
return FALSE;
}
m_pDB=new CDaoDatabase;
ASSERT(m_pDB != NULL);
try
{
m_pDB->Open(lpszPashName);
}
catch(CDaoException*e)
{
delete m_pDB;
m_pDB=NULL;
TCHAR szCause[255];
CString strFormatted=_T("the data file is error!");
e->GetErrorMessage(szCause,255);
strFormatted+=szCause;
AfxMessageBox(strFormatted,MB_OK|MB_ICONEXCLAMATION);
e->Delete();
m_bFileOpen=FALSE;
return FALSE;
}
m_pSet=new CMyRecordSet(m_pDB);
try
{
m_pSet->Open();
m_RecordCount=m_pSet->GetRecordCount();
}
catch(CDaoException*e)
{
delete m_pSet;
m_pDet=NULL;
TCHAR szCause[255];
CString strFormatted=_T("the data file is error!");
e->GetErrorMessage(szCause,255);
strFormatted+=szCause;
AfxMessageBox(strFormatted,MB_OK|MB_ICONEXCLAMATION);
e->Delete();
m_bFileOpen=FALSE;
return FALSE;
}
m_bFileOpen=TURE;
UpdateAllViews(NULL,HINT_DB_OPENED);
return TRUE;
}
UINT CMyAddrView::m_ColumnLabelID[NUM_COLUMNS]=
{
IDS_TABLE_HEAD_NAME,
IDS_TABLE_HEAD_WPHONE,
IDS_TABLE_HEAD_MPHONE,
IDS_TABLE_HEAD_HPHONE,
IDS_TABLE_HEAD_NOTE,
};
int CMyAddrView::m_columnFormat[NUM_COLUMNS]=
{
LVCFMT_LEFT,LVCFMT_LEFT,LVCFMT_LEFT,LVCFMT_LEFT
};
void CMyAddrView::OnInitialUpdate()
{
CListView::OnInitialUpdate();
CListCtrl &lc = GetListCtrl();
int Column;
LV_COLUMN LVColumn;
CMyAddrDoc *pDoc=(CMyAddrDoc*)GetDocument();
DWORD dwStyle=ListView_GetExtendedListViewStyle(GetListCtrl());
dwStyle|LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES|LVS_EX_HEADERDRAGDROP|LVS_EX_TRACKSELECT;
ListView_SetExtendedListViewStyle(GetListCtrl(),dwStyle);
lc.DeleteAllItems();
m_pImageList= new CImageList();
m_pImageList->Create(IDB_BITMAP1,16,1,RGB(0,0,0));
GetListCtrl().SetImageList(m_pImageList,LVSIL_SMALL);
m_ColumnWidth[COL_NAME]=100;
m_ColumnWidth[COL_WPHONE]=100;
m_ColumnWidth[COL_MPHONE]=100;
m_ColumnWidth[COL_HPHONE]=100;
m_ColumnWidth[COL_NOTE]=200;
LVColumn.mask = LVCF_FMT|LVCF_WIDTH|LVCF_TEXT|LVCF_SUBITEM;
{
for(Column = 0;(Column<NUM_COLUMNS);Column++)
{
CString HeaderString;
HeaderString.LoadString(m_ColumnLableID[Column]);
LVColumn.iSubItem = Column;
LVColumn.pszText = (LPTSTR)(LPCTSTR)HeaderString;
LVColumn.cx = m_ColumnWidth[Column];
LVColumn.fmt = m_ColumnFormat[Column];
lc.IsertColumn(Column, &LVColumn);
}
}
}
可以用面向对象的方式。定义一个通用的访问数据库的接口
再分别对于不同的数据库,写不同的类实现这个接口。配置文件里面,配置好不同数据库的连接字符串。初始化数据库访问实例的时候,根据传入不同的类型,实例化访问不同数据库的实例,然后就可以使用了。
可以参考简单工厂模式或者工厂方法模式。
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -