📄 ado_exampleview.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 + -