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

📄 adodblibdemoview.cpp

📁 这个源码封装了ADO连接数据库
💻 CPP
字号:
// AdoDbLibDemoView.cpp : implementation of the CAdoDbLibDemoView class
//

#include "stdafx.h"
#include "AdoDbLibDemo.h"

#include "AdoDbLibDemoDoc.h"
#include "AdoDbLibDemoView.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CAdoDbLibDemoView

IMPLEMENT_DYNCREATE(CAdoDbLibDemoView, CListView)

BEGIN_MESSAGE_MAP(CAdoDbLibDemoView, CListView)
	//{{AFX_MSG_MAP(CAdoDbLibDemoView)
	ON_COMMAND(ID_OPENCONN, OnOpenconn)
	//}}AFX_MSG_MAP
	// Standard printing commands
	ON_COMMAND(ID_FILE_PRINT, CListView::OnFilePrint)
	ON_COMMAND(ID_FILE_PRINT_DIRECT, CListView::OnFilePrint)
	ON_COMMAND(ID_FILE_PRINT_PREVIEW, CListView::OnFilePrintPreview)
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CAdoDbLibDemoView construction/destruction

CAdoDbLibDemoView::CAdoDbLibDemoView()
{
	// TODO: add construction code here

}

CAdoDbLibDemoView::~CAdoDbLibDemoView()
{
}

BOOL CAdoDbLibDemoView::PreCreateWindow(CREATESTRUCT& cs)
{
	// TODO: Modify the Window class or styles here by modifying
	//  the CREATESTRUCT cs

	return CListView::PreCreateWindow(cs);
}

/////////////////////////////////////////////////////////////////////////////
// CAdoDbLibDemoView drawing

void CAdoDbLibDemoView::OnDraw(CDC* pDC)
{
	CAdoDbLibDemoDoc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);
	// TODO: add draw code for native data here
}

void CAdoDbLibDemoView::OnInitialUpdate()
{
	CListView::OnInitialUpdate();	
	CListCtrl &theListCtrl=GetListCtrl();
	theListCtrl.DeleteAllItems();
	theListCtrl.ModifyStyle(NULL,LVS_REPORT);
	theListCtrl.SetExtendedStyle(LVS_EX_GRIDLINES|LVS_EX_FULLROWSELECT);
	theListCtrl.InsertColumn(0,"编号",LVCFMT_LEFT,80);
	theListCtrl.InsertColumn(1,"姓名",LVCFMT_LEFT,100);	
	theListCtrl.InsertColumn(2,"出生日期",LVCFMT_LEFT,120);
	theListCtrl.InsertColumn(3,"备注",LVCFMT_LEFT,300);
	// TODO: You may populate your ListView with items by directly accessing
	//  its list control through a call to GetListCtrl().
}

/////////////////////////////////////////////////////////////////////////////
// CAdoDbLibDemoView printing

BOOL CAdoDbLibDemoView::OnPreparePrinting(CPrintInfo* pInfo)
{
	// default preparation
	return DoPreparePrinting(pInfo);
}

void CAdoDbLibDemoView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
	// TODO: add extra initialization before printing
}

void CAdoDbLibDemoView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
	// TODO: add cleanup after printing
}

/////////////////////////////////////////////////////////////////////////////
// CAdoDbLibDemoView diagnostics

#ifdef _DEBUG
void CAdoDbLibDemoView::AssertValid() const
{
	CListView::AssertValid();
}

void CAdoDbLibDemoView::Dump(CDumpContext& dc) const
{
	CListView::Dump(dc);
}

CAdoDbLibDemoDoc* CAdoDbLibDemoView::GetDocument() // non-debug version is inline
{
	ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CAdoDbLibDemoDoc)));
	return (CAdoDbLibDemoDoc*)m_pDocument;
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CAdoDbLibDemoView message handlers

void CAdoDbLibDemoView::OnOpenconn() 
{
	// TODO: Add your command handler code here
	//打开数据库连接,产生bReOpen为FALSE,当第二次执行本代码时候,
	//将不会重新打开数据库连接,除非数据库连接已经断开
	if(!GetDocument()->m_adoDBConn.OpenConnection(
			"driver={sql server};server=(local);DataBase=Northwind;uid=sa ; pwd="
		))
	{
		return ;
	}
	CListCtrl &theListCtrl=GetListCtrl();
	theListCtrl.DeleteAllItems();

	CString strSQL("select * from Employees");
	_RecordsetPtr* prsThis=NULL;
	prsThis=new _RecordsetPtr;		
	//2.如果记录集打开失败
	if(!(GetDocument()->m_adoDBConn.OpenRecordset(strSQL,prsThis)))
		return;
	//3.没有记录
	if((*prsThis)->adoEOF)
		return;

	//4.定义访问字段的类实例
	CBBRstValues rsv(GetDocument()->m_adoDBConn.GetConnection(),prsThis);


	long lID;
	//得到数字(第一条记录)
	rsv.GetValueLong(&lID,"EMployeeID");
	TRACE1("Get ID:%d",lID);	
	//也可以rsv.GetValueLong(&lID,0);
	//建议用字段名,对存储过程返回的常量(没有字段名),可以用序号
	CString strEID,strEName,strEBirthDay,strENotes;
	int i=0;
	while(!(*prsThis)->adoEOF)
	{
		rsv.GetValueStr(strEID,"EMployeeID");
		theListCtrl.InsertItem(i,strEID);
		rsv.GetValueStr(strEName,"LastName");
		//得到DateTime字段,取年月日十位
		rsv.GetValueStr(strEBirthDay,"BirthDate",10);
		//得到nText字段
		rsv.GetValText(strENotes,CString("Notes"));
		theListCtrl.SetItemText(i,1,strEName);
		theListCtrl.SetItemText(i,2,strEBirthDay);
		theListCtrl.SetItemText(i,3,strENotes);
		//移动记录到下一个记录
		(*prsThis)->MoveNext();
		i++;
	}
	//清除现场
	(*prsThis)->Close();
	delete prsThis;
	prsThis=NULL;	
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -