📄 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_Keyword(_T(""))
{
}
CSltDlg::~CSltDlg()
{
}
void CSltDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Control(pDX, IDC_LIST1, m_ListInfo);
DDX_Text(pDX, IDC_EDIT_KEYWORD, m_Keyword);
}
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");
// 察看全部
int iWhichRadioButton;
iWhichRadioButton = GetCheckedRadioButton(IDC_RADIO_NAME,IDC_RADIO_NUM);
if (iWhichRadioButton=IDC_RADIO_NAME)
{
if( m_Keyword == "" )
{
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_Keyword);
m_pRecordset->Open( temp.GetBuffer(),
_variant_t((IDispatch*)m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);
}
}
else if (iWhichRadioButton=IDC_RADIO_NUM)
{
if( m_Keyword == "" )
{
m_pRecordset->Open("SELECT NUM FROM student", // 查询所有语句
_variant_t((IDispatch*)m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);
}
else
{
CString temp;
temp.Format("SELECT NUM FROM student WHERE (NUM LIKE '%%%s%%')",m_Keyword);
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, num, classnum;
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( "NUM" );
if( value.vt != VT_NULL )
num = value.bstrVal;
else
num = "";
// 班级
value = m_pRecordset->GetCollect( "CLASS" );
if( value.vt != VT_NULL )
classnum = value.bstrVal;
else
classnum = "";
// 年龄
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);
m_ListInfo.SetItemText( index, 2, num);
m_ListInfo.SetItemText( index, 3, classnum);
CString temp;
temp.Format( "%d", age );
m_ListInfo.SetItemText( index, 4, temp );
m_ListInfo.SetItemText( index, 5, 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_LEFT,100);
m_ListInfo.InsertColumn(1,"性别",LVCFMT_LEFT,50);
m_ListInfo.InsertColumn(2,"学号",LVCFMT_LEFT,100);
m_ListInfo.InsertColumn(3,"班级",LVCFMT_LEFT,100);
m_ListInfo.InsertColumn(4,"年龄",LVCFMT_LEFT,50);
m_ListInfo.InsertColumn(5,"生日",LVCFMT_LEFT,100);
//初始化单选矿
CheckRadioButton(IDC_RADIO_NAME,IDC_RADIO_NUM,IDC_RADIO_NAME);
UpdateData(FALSE);
return TRUE; // return TRUE unless you set the focus to a control
// 异常: OCX 属性页应返回 FALSE
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -