📄 sltdlg.cpp
字号:
// SltDlg.cpp : 实现文件
//
#include "stdafx.h"
#include "Student.h"
#include "SltDlg.h"
#include ".\sltdlg.h"
// CSltDlg 对话框
IMPLEMENT_DYNAMIC(CSltDlg, CDialog)
CSltDlg::CSltDlg(CWnd* pParent /*=NULL*/)
: CDialog(CSltDlg::IDD, pParent)
, m_Name(_T(""))
{
}
CSltDlg::~CSltDlg()
{
}
void CSltDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Text(pDX, IDC_EDIT_NAME, m_Name);
DDV_MaxChars(pDX, m_Name, 50);
DDX_Control(pDX, IDC_LIST1, m_ListInfo);
}
BEGIN_MESSAGE_MAP(CSltDlg, CDialog)
ON_BN_CLICKED(IDCANCEL, OnBnClickedCancel)
ON_BN_CLICKED(IDOK, OnBnClickedOk)
END_MESSAGE_MAP()
// CSltDlg 消息处理程序
void CSltDlg::OnBnClickedCancel()
{
OnCancel();
}
void CSltDlg::OnBnClickedOk()
{
if( UpdateData() == false )
return;
//指向Connection对象的指针,用于连接到数据库
_ConnectionPtr m_pConnection;
//Recordset 指针, 记录集指针
_RecordsetPtr m_pRecordset;
try
{
HRESULT hr;
// 创建Connection对象
hr = m_pConnection.CreateInstance("ADODB.Connection");
if( SUCCEEDED( hr ) )
{
// 连接数据库
hr = m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=student.mdb",
"","",adModeUnknown);
}
else
{
return ;
}
}
catch( ... )
{
MessageBox( "连接数据库失败,请确定数据库 student.mdb 是否在当前路径下");
}
try
{
// 生成Recordset实例
m_pRecordset.CreateInstance("ADODB.Recordset");
// 察看全部
if( m_Name == "" )
{
m_pRecordset->Open("SELECT * FROM student", // 查询所有语句
_variant_t((IDispatch*)m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);
}
else
{
CString temp;
temp.Format("SELECT * FROM student WHERE (NAME LIKE '%%%s%%')",m_Name);
m_pRecordset->Open( temp.GetBuffer(),
_variant_t((IDispatch*)m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);
}
}
catch( _com_error * e )
{
m_pConnection->Close();
MessageBox( e->ErrorMessage() );
}
_variant_t value;
COleDateTime time;
CString name, sex;
int age;
try
{
m_ListInfo.DeleteAllItems();
int index = 0;
while( !m_pRecordset->adoEOF )
{
// 姓名
value = m_pRecordset->GetCollect( "NAME" );
if( value.vt != VT_NULL )
name = value.bstrVal;
else
name = "";
// 性别
value = m_pRecordset->GetCollect( "SEX" );
if( value.vt != VT_NULL )
sex = value.bstrVal;
else
sex = "未知";
// 年龄
value = m_pRecordset->GetCollect( "AGE" );
if( value.vt != VT_NULL )
age = (int)value.llVal;
else
age = 0;
// 生日
value = m_pRecordset->GetCollect( "Birthday" );
if( value.vt != VT_NULL )
time = value.date;
else
time.SetDate(2000,1,1);
// 把数据加入列表框
m_ListInfo.InsertItem( index, name, 0 );
m_ListInfo.SetItemText( index, 1, sex );
CString temp;
temp.Format( "%d", age );
m_ListInfo.SetItemText( index, 2, temp );
m_ListInfo.SetItemText( index, 3, time.Format() );
index++;
m_pRecordset->MoveNext();
}
}
catch( _com_error * e )
{
MessageBox( e->ErrorMessage() );
}
try
{
m_pRecordset->Close();
m_pConnection->Close();
}
catch( _com_error * e )
{
MessageBox( e->ErrorMessage() );
}
}
BOOL CSltDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: 在此添加额外的初始化
// 初始化信息框
m_ListInfo.SetExtendedStyle( LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT | LVS_EX_HEADERDRAGDROP );
m_ListInfo.InsertColumn(0,"姓名",LVCFMT_CENTER,100);
m_ListInfo.InsertColumn(1,"性别",LVCFMT_LEFT,50);
m_ListInfo.InsertColumn(2,"年龄",LVCFMT_LEFT,50);
m_ListInfo.InsertColumn(3,"生日",LVCFMT_LEFT,90);
return TRUE; // return TRUE unless you set the focus to a control
// 异常: OCX 属性页应返回 FALSE
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -