📄 adoaccessdlg.cpp
字号:
// ADOAccessDlg.cpp : implementation file
//
#include "stdafx.h"
#include "ADOAccess.h"
#include "ADOAccessDlg.h"
#include "voconnection.h"
#include "vorecordset.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CADOAccessDlg dialog
CADOAccessDlg::CADOAccessDlg(CWnd* pParent /*=NULL*/)
: CDialog(CADOAccessDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CADOAccessDlg)
m_strSql = _T("");//初始化
//}}AFX_DATA_INIT
// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
m_strDBName = _T("test.cdb");//数据库名称
}
void CADOAccessDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CADOAccessDlg)
DDX_CBString(pDX, IDC_COMBO_SQL, m_strSql);//将下拉框选中的语句放入m_strSql中
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CADOAccessDlg, CDialog)
//{{AFX_MSG_MAP(CADOAccessDlg)
ON_WM_DESTROY()
ON_BN_CLICKED(IDC_BUTTON_NEW, OnButtonNew)
ON_BN_CLICKED(IDC_BUTTON_OPEN, OnButtonOpen)
ON_BN_CLICKED(IDC_BUTTON_EXE, OnButtonExe)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CADOAccessDlg message handlers
BOOL CADOAccessDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// Set the icon for this dialog. The framework does this automatically
// when the application's main window is not a dialog
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon
CenterWindow(GetDesktopWindow()); // center to the hpc screen
CListCtrl* pListCtrl = (CListCtrl*)GetDlgItem(IDC_LIST_VIEW);
CRect rt;
pListCtrl->GetClientRect(&rt);
//InsertColumn(列index,列名,对齐方式LVCFMT_RIGHT,LVCFMT_CENTER,宽度)
//成功时,返回新列的索引,失败返回-1
pListCtrl->InsertColumn(0, _T("姓名"), LVCFMT_LEFT, rt.Width()/2);
pListCtrl->InsertColumn(1, _T("年龄"), LVCFMT_LEFT, rt.Width()/2);
if (!CreateDatabase(m_strDBName))
AfxMessageBox(_T("创建数据库失败"));
AddRecordToView();
return TRUE;
}
//建立数据库(数据库名称),并且建表
BOOL CADOAccessDlg::CreateDatabase(LPCTSTR szDbName)
{
CFile file;
if (file.Open(szDbName, CFile::modeRead))
{
file.Close();
return TRUE;
}
CVOConnection* pConn;
pConn=new CVOConnection(NULL);
// CREAT DATABASE 'test.cdb' 创建数据库
CString strSQL = _T("CREATE DATABASE '");
strSQL += szDbName;
strSQL += _T("'");
BOOL bRt = pConn->Execute(strSQL);//执行SQL语句
delete pConn;//关闭连接
if (!bRt)
return bRt;
//pConn = new CVOConnection(m_strDBName);原
pConn = new CVOConnection(szDbName);
bRt = pConn->Execute(_T("create table people(Name varchar(40),age int)"));
delete pConn;
return bRt;
}
void CADOAccessDlg::OnButtonNew()
{
}
void CADOAccessDlg::OnButtonOpen()
{
}
void CADOAccessDlg::OnButtonExe()
{
UpdateData();//更新dialog box数据
CVOConnection* pConn;
pConn = new CVOConnection(m_strDBName);
pConn->Execute(m_strSql);
delete pConn;
AddRecordToView();
}
//读取数据
void CADOAccessDlg::AddRecordToView()
{
CVOConnection* pConn;
CVORecordset* pSet;
pConn=new CVOConnection(m_strDBName);
pSet=new CVORecordset(*pConn);
if (!pSet->Initialize())
return;
pSet->Open(_T("select * from people"),adOpenForwardOnly,adLockPessimistic);
//加载表格
if(pSet->IsBOF()||pSet->IsEOF())
{
AfxMessageBox(_T("数据库中没有相关记录!"));
pSet->Close();
delete pSet;
delete pConn;
return;
}
pSet->MoveFirst();
int Total=0;
CListCtrl* pListCtrl = (CListCtrl*)GetDlgItem(IDC_LIST_VIEW);
pListCtrl->DeleteAllItems();//clear dialog box
while(!pSet->IsEOF())
{
//This method inserts an item into the list view control
//(被插入列的索引,名称,Specifies the index of an image for the item)
pListCtrl->InsertItem(Total,pSet->GetFieldValueString(0),-1);
/*This method changes the text of a list view item or subitem
(Specifies the index of the item whose text is to be set,
Specifies the index of the subitem, or zero to set the item label,
Specifies the pointer to a string that contains the new item text)*/
pListCtrl->SetItemText(Total,1,pSet->GetFieldValueString(1));
Total++;
pSet->MoveNext();
}
pSet->Close();
delete pSet;
delete pConn;
return;
/* HRESULT hr;
short iEndOfFile;
VARIANT varData, varFieldSelect, varFieldSelect2;
TCHAR* pszName;
TCHAR* pszAge;
pszName = (TCHAR*)malloc(40);
pszAge = (TCHAR*)malloc(40);
hr = m_pADOCERs->MoveFirst();
hr = m_pADOCERs->get_EOF(&iEndOfFile);
int k = 0;
CListCtrl* pListCtrl = (CListCtrl*)GetDlgItem(IDC_LIST_VIEW);
pListCtrl->DeleteAllItems();
while (!iEndOfFile)
{
hr = m_pADOCERs->get_Fields(&m_pADOCEFields);
varFieldSelect.uiVal = 0;
varFieldSelect.vt = VT_UI2;
hr = m_pADOCEFields->get_Item(varFieldSelect, &m_pADOCEField);
hr = m_pADOCEField->get_Value(&varData);
lstrcpy(pszName, varData.bstrVal);
varFieldSelect2.uiVal = 2;
varFieldSelect2.vt = VT_I4;
hr = m_pADOCEFields->get_Item(varFieldSelect2, &m_pADOCEField);
hr = m_pADOCEField->get_Value(&varData);
_itow(varData.lVal, pszAge, 10);
pListCtrl->InsertItem(k, _T(""));
pListCtrl->SetItemText(k, 0, pszName);
pListCtrl->SetItemText(k, 1, pszAge);
m_pADOCERs->MoveNext();
hr = m_pADOCERs->get_EOF(&iEndOfFile);
++k;
}
free(pszName);
free(pszAge);*/
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -