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

📄 ado_exampleview.cpp

📁 Visual C++数据库编程源代码 《Visual C++程序员成长攻略》一书的附带源代码
💻 CPP
字号:
// ADO_EXAMPLEView.cpp : implementation of the CADO_EXAMPLEView class
//

#include "stdafx.h"
#include "ADO_EXAMPLE.h"

#include "ADO_EXAMPLEDoc.h"
#include "ADO_EXAMPLEView.h"

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

/////////////////////////////////////////////////////////////////////////////
// CADO_EXAMPLEView

IMPLEMENT_DYNCREATE(CADO_EXAMPLEView, CView)

BEGIN_MESSAGE_MAP(CADO_EXAMPLEView, CView)
	//{{AFX_MSG_MAP(CADO_EXAMPLEView)
	ON_COMMAND(ID_ADD_TABLE, OnAddTable)
	ON_COMMAND(ID_DELETE_TABLE, OnDeleteTable)
	ON_COMMAND(ID_ADD_ROW, OnAddRow)
	ON_COMMAND(ID_DELETE_ROW, OnDeleteRow)
	ON_COMMAND(ID_ADD_RECORD, OnAddRecord)
	ON_COMMAND(ID_STATISTICAL_RECORD, OnStatisticalRecord)
	//}}AFX_MSG_MAP
	// Standard printing commands
	ON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint)
	ON_COMMAND(ID_FILE_PRINT_DIRECT, CView::OnFilePrint)
	ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview)
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CADO_EXAMPLEView construction/destruction

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

}

CADO_EXAMPLEView::~CADO_EXAMPLEView()
{
	m_pConnection->Close();       //关闭Connection对象
	m_pConnection.Release();      //释放Connection对象
}

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

	return CView::PreCreateWindow(cs);
}

/////////////////////////////////////////////////////////////////////////////
// CADO_EXAMPLEView drawing

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

/////////////////////////////////////////////////////////////////////////////
// CADO_EXAMPLEView printing

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

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

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

/////////////////////////////////////////////////////////////////////////////
// CADO_EXAMPLEView diagnostics

#ifdef _DEBUG
void CADO_EXAMPLEView::AssertValid() const
{
	CView::AssertValid();
}

void CADO_EXAMPLEView::Dump(CDumpContext& dc) const
{
	CView::Dump(dc);
}

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

/////////////////////////////////////////////////////////////////////////////
// CADO_EXAMPLEView message handlers

void CADO_EXAMPLEView::OnInitialUpdate() 
{
	CView::OnInitialUpdate();
	
	//"加入自定义代码"
	HRESULT m_pHresult;
	HRESULT m_hresult;
	try
	{
        //创建Connection对象
		m_pHresult = m_pConnection.CreateInstance ("ADODB.Connection");
		if(SUCCEEDED(m_pHresult))
		{
		   m_hresult = m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=ADO.mdb","","",adModeUnknown);   //连接数据库 
		}
	}
	catch(_com_error e)   //捕捉连接异常
	{
		CString m_pErrormessage;
		m_pErrormessage.Format("连接数据库操作失败!\r\n错误信息为:%s", e.ErrorMessage ());
		AfxMessageBox(m_pErrormessage);    //显示错误信息
	}

}

void CADO_EXAMPLEView::OnAddTable() 
{
	//"加入自定义代码"
	_variant_t m_pTable;
	_bstr_t m_pCommandText;
	CString m_pStr,m_pTableName;
	if(m_pDialog.DoModal()==IDOK)
	{
		m_pTableName = m_pDialog.m_pTableName;
		m_pStr="CREATE TABLE " + m_pTableName + "(ID INTEGER, Username TEXT, Num INTEGER)";
		m_pCommandText = m_pStr.AllocSysString();
		m_pConnection->Execute(m_pCommandText,&m_pTable,adCmdUnknown);
		CString str = m_pTableName;
		str = "Table " + str + " has been added!";
		AfxMessageBox(str);
	}
}

void CADO_EXAMPLEView::OnDeleteTable() 
{
	//"加入自定义代码"
	_variant_t m_pTable;
	_bstr_t m_pCommandText;
	CString m_pStr,m_pTableName;
	if(m_pDialog.DoModal()==IDOK)
	{
		m_pTableName = m_pDialog.m_pTableName;
		m_pStr="DROP TABLE " + m_pTableName;
		m_pCommandText = m_pStr.AllocSysString();
		m_pConnection->Execute(m_pCommandText,&m_pTable,adCmdUnknown);
		CString str = m_pTableName;
		str = "Table " + str + " has been deleted!";
		AfxMessageBox(str);
	}
}

void CADO_EXAMPLEView::OnAddRow() 
{
	//"加入自定义代码"
	_variant_t m_pRow;
	_bstr_t m_pCommandText;
	CString m_pStr,m_pTableName,m_pRowName;
	if(m_pDialog.DoModal()==IDOK)
	{
		m_pTableName = m_pDialog.m_pTableName;
		if(m_pDialog.DoModal()==IDOK)
		{
			m_pRowName = m_pDialog.m_pTableName;
			m_pStr="ALTER TABLE " + m_pTableName + " ADD " + m_pRowName + " INTEGER";
			m_pCommandText = m_pStr.AllocSysString();
			m_pConnection->Execute(m_pCommandText,&m_pRow,adCmdText);
			CString str;
			str = "Row " + m_pRowName + " in Table " + m_pTableName + " has been added!";
			AfxMessageBox(str);
		}
	}
}

void CADO_EXAMPLEView::OnDeleteRow() 
{
	//"加入自定义代码"
	_variant_t m_pRow;
	_bstr_t m_pCommandText;
	CString m_pStr,m_pTableName,m_pRowName;
	if(m_pDialog.DoModal()==IDOK)
	{
		m_pTableName = m_pDialog.m_pTableName;
		if(m_pDialog.DoModal()==IDOK)
		{
			m_pRowName = m_pDialog.m_pTableName;
			m_pStr="ALTER TABLE " + m_pTableName + " DROP " + m_pRowName + " INTEGER";
			m_pCommandText = m_pStr.AllocSysString();
			m_pConnection->Execute(m_pCommandText,&m_pRow,adCmdText);
			CString str;
			str = "Row " + m_pRowName + " in Table " + m_pTableName + " has been deleted!";
			AfxMessageBox(str);
		}
	}
}

void CADO_EXAMPLEView::OnAddRecord() 
{
	//"加入自定义代码"
	_variant_t m_pRecord;
	_bstr_t m_pCommandText;
	CString m_pUserName[10];       int i;
	m_pUserName[0]="Anda";         m_pUserName[1]="Lucy";
	m_pUserName[2]="Lily";         m_pUserName[3]="Bobe";
	m_pUserName[4]="Jone";         m_pUserName[5]="Lida";
	m_pUserName[6]="Kaka";         m_pUserName[7]="Nina";
	m_pUserName[8]="Leon";         m_pUserName[9]="Hank";
	for(i = 1;i < 11; i ++)
	{
		CString m_pStr,str;
		str = "INSERT INTO Information(ID, Username, Num) VALUES (%d, ' " + m_pUserName[i-1] + " ', %d)" ;
	    m_pStr.Format(str, i, i*i);
		m_pConnection->Execute((_bstr_t)m_pStr, &m_pRecord, adCmdText);
	}
	AfxMessageBox("成功添加10条记录!");
}

void CADO_EXAMPLEView::OnStatisticalRecord() 
{
	//"加入自定义代码"
	_RecordsetPtr m_pRecordset;
	_variant_t m_pRecord;
	_bstr_t m_pCommandText;
	CString m_pStr,m_pTableName;
	if(m_pDialog.DoModal()==IDOK)
	{
		m_pTableName=m_pDialog.m_pTableName;
		m_pStr="SELECT COUNT(*) FROM " + m_pTableName + " where ID > 0";
		m_pCommandText = m_pStr.AllocSysString();
		m_pRecordset  =  m_pConnection->Execute(m_pCommandText, &m_pRecord, adCmdText);
		_variant_t m_pIndex = (long) 0;
		_variant_t m_pCount = m_pRecordset->GetCollect(m_pIndex);
		m_pRecordset->Close();
		CString str;
		str.Format("表%s中共有%d条记录", m_pTableName, m_pCount.lVal);
		AfxMessageBox(str);
	}
}

⌨️ 快捷键说明

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