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

📄 testview.cpp

📁 跟数据库密切相关的各种典型操作VC例程源代码
💻 CPP
字号:
// TestView.cpp : CTestView 类的实现
//

#include "stdafx.h"
#include "Test.h"

#include "TestSet.h"
#include "TestDoc.h"
#include "TestView.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#endif


// CTestView

IMPLEMENT_DYNCREATE(CTestView, CRecordView)

BEGIN_MESSAGE_MAP(CTestView, CRecordView)
	// 标准打印命令
	ON_COMMAND(ID_FILE_PRINT, CRecordView::OnFilePrint)
	ON_COMMAND(ID_FILE_PRINT_DIRECT, CRecordView::OnFilePrint)
	ON_COMMAND(ID_FILE_PRINT_PREVIEW, CRecordView::OnFilePrintPreview)
	ON_BN_CLICKED(IDC_BTNFIRST, OnBnClickedBtnfirst)
	ON_BN_CLICKED(IDC_BTNPRE, OnBnClickedBtnpre)
	ON_BN_CLICKED(IDC_BTNNEXT, OnBnClickedBtnnext)
	ON_BN_CLICKED(IDC_BTNEND, OnBnClickedBtnend)
	ON_BN_CLICKED(IDC_BTNADD, OnBnClickedBtnadd)
	ON_BN_CLICKED(IDC_BTNDELETE, OnBnClickedBtndelete)
	ON_BN_CLICKED(IDC_BTNEDIT, OnBnClickedBtnedit)
	ON_BN_CLICKED(IDC_BTNSORT, OnBnClickedBtnsort)
	ON_BN_CLICKED(IDC_BTNFILTER, OnBnClickedBtnfilter)
	ON_BN_CLICKED(IDC_BTNSQLQUERY, OnBnClickedBtnsqlquery)
END_MESSAGE_MAP()

// CTestView 构造/销毁

CTestView::CTestView()
	: CRecordView(CTestView::IDD)
{
	m_pSet = NULL;
	// TODO: 在此处添加构造代码

}

CTestView::~CTestView()
{
}

void CTestView::DoDataExchange(CDataExchange* pDX)
{
	CRecordView::DoDataExchange(pDX);
	// 可以在此处插入 DDX_Field* 函数以将控件“连接”到数据库字段,例如
	// DDX_FieldText(pDX, IDC_MYEDITBOX, m_pSet->m_szColumn1, m_pSet)
	// DDX_FieldCheck(pDX, IDC_MYCHECKBOX, m_pSet->m_bColumn2, m_pSet);
	// 有关更多信息,请参阅 MSDN 和 ODBC 示例
}

BOOL CTestView::PreCreateWindow(CREATESTRUCT& cs)
{
	// TODO: 在此处通过修改 CREATESTRUCT cs 来修改窗口类或
	// 样式

	return CRecordView::PreCreateWindow(cs);
}

void CTestView::OnInitialUpdate()
{
	m_pSet = &GetDocument()->m_TestSet;
	CRecordView::OnInitialUpdate();
}


// CTestView 打印

BOOL CTestView::OnPreparePrinting(CPrintInfo* pInfo)
{
	// 默认准备
	return DoPreparePrinting(pInfo);
}

void CTestView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
	// TODO: 打印前添加额外的初始化
}

void CTestView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
	// TODO: 打印后添加清除过程
}


// CTestView 诊断

#ifdef _DEBUG
void CTestView::AssertValid() const
{
	CRecordView::AssertValid();
}

void CTestView::Dump(CDumpContext& dc) const
{
	CRecordView::Dump(dc);
}

CTestDoc* CTestView::GetDocument() const // 非调试版本是内联的
{
	ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CTestDoc)));
	return (CTestDoc*)m_pDocument;
}
#endif //_DEBUG


// CTestView 数据库支持
CRecordset* CTestView::OnGetRecordset()
{
	return m_pSet;
}



// CTestView 消息处理程序
//首条记录
void CTestView::OnBnClickedBtnfirst()
{
	m_pSet->Move(0,SQL_FETCH_FIRST);
	CString StrInfo;
	StrInfo.Format("姓名:%s,职务:%s",m_pSet->column1,m_pSet->column2);
	MessageBox(StrInfo,"信息提示",MB_OK);
}
//前一记录
void CTestView::OnBnClickedBtnpre()
{
	if(m_pSet->IsBOF())
	{
		MessageBox("已经是首条记录!","信息提示",MB_OK);
		return;
	}
	m_pSet->MovePrev();
	CString StrInfo;
	StrInfo.Format("姓名:%s,职务:%s",m_pSet->column1,m_pSet->column2);
	MessageBox(StrInfo,"信息提示",MB_OK);
}
//下一记录
void CTestView::OnBnClickedBtnnext()
{
	if(m_pSet->IsEOF())
	{
		MessageBox("已经是末条记录!","信息提示",MB_OK);
		return;
	}	
	m_pSet->MoveNext();
	CString StrInfo;
	StrInfo.Format("姓名:%s,职务:%s",m_pSet->column1,m_pSet->column2);
	MessageBox(StrInfo,"信息提示",MB_OK);	
}
//尾条记录
void CTestView::OnBnClickedBtnend()
{
	m_pSet->MoveLast();
	CString StrInfo;
	StrInfo.Format("姓名:%s,职务:%s",m_pSet->column1,m_pSet->column2);
	MessageBox(StrInfo,"信息提示",MB_OK);
}

void CTestView::OnBnClickedBtnadd()
{
	//增加新记录到数据库中
	m_pSet->AddNew();									
	//设置新记录的字段值
	m_pSet->SetFieldNull(&(m_pSet->m_ID),FALSE);
	m_pSet->column1="王彬";
	m_pSet->column2="技术总监";
	if(!m_pSet->Update()||!m_pSet->Requery())
	{
		MessageBox("更新数据时出现错误!","信息提示",MB_OK);
		return;
	}	
	MessageBox("执行增加记录操作成功!","信息提示",MB_OK);
	//移动到新记录
	m_pSet->MoveLast();								
}

void CTestView::OnBnClickedBtndelete()
{
	if(MessageBox("是否需要真正删除当前记录?","信息提示",MB_ICONWARNING+MB_YESNO+MB_DEFBUTTON2)==IDNO)
	{
		return;
	}
	//删除当前记录
	m_pSet->Delete();	
	m_pSet->Requery();
	MessageBox("数据库中的当前记录已经被成功删除","信息提示",MB_OK);
	m_pSet->MoveFirst();
}

void CTestView::OnBnClickedBtnedit()
{
	//修改数据库中的记录
	m_pSet->Edit();		
	//设置记录的新字段值	
	m_pSet->column2="财务部长";
	//提交新记录并保存到数据库中,更新数据库
	if(!m_pSet->Update()||!m_pSet->Requery())
	{
		MessageBox("更新数据时出现错误!","信息提示",MB_OK);
		return;
	}	
	MessageBox("执行修改记录操作成功!","信息提示",MB_OK);	
}

void CTestView::OnBnClickedBtnsort()
{
	//关闭记录集
	m_pSet->Close();					
	//设置排序标准
	m_pSet->m_strSort="职务";			
	//重新打开记录集
	m_pSet->Open();	
}

void CTestView::OnBnClickedBtnfilter()
{
	CString strField="职务";
	CString strValue="财务部长";
	CString strFilter;
	strFilter=strField+"='"+strValue+"'";
	//关闭记录集
	m_pSet->Close();						
	//设置过滤标准
	m_pSet->m_strFilter=strFilter;			
	//打开记录集
	m_pSet->Open();	
	CString StrInfo;
	StrInfo.Format("姓名:%s,职务:%s",m_pSet->column1,m_pSet->column2);
	MessageBox(StrInfo,"信息提示",MB_OK);
	m_pSet->Close();			
	m_pSet->m_strFilter="";
	m_pSet->Open();
}

void CTestView::OnBnClickedBtnsqlquery()
{
	m_pSet->Close();
	m_pSet->Open(CRecordset::dynaset,"SELECT 雇员.雇员ID,雇员.名字 FROM 雇员 WHERE 雇员.职务 LIKE '财务部长'");	
	CString StrInfo;
	StrInfo.Format("姓名:%s",m_pSet->column1);
	MessageBox(StrInfo,"信息提示",MB_OK);
	m_pSet->Close();			
	m_pSet->m_strFilter="";
	m_pSet->Open();	
}

⌨️ 快捷键说明

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