⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 chengxu.txt

📁 创建数据库必须的一些函数
💻 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 + -