CRect rect;
this->GetClientRect(&rect);
m_StatusBarCtrl.Create(WS_CHILD|WS_VISIBLE|CCS_BOTTOM,rect,this,ID_STATUS_BAR_CTRL);
int indicators[3];
indicators[0]=rect.Width()*3/7;
indicators[1]=rect.Width()*5/7;
indicators[2]=rect.Width();
m_StatusBarCtrl.SetParts(3,indicators);
str.LoadString(IDS_AUTHOR);
m_StatusBarCtrl.SetText(str,0,SBT_POPOUT);
m_StatusBarCtrl.SetText("当前操作员:
"+app->m_sUserName,1,SBT_POPOUT);
m_StatusBarCtrl.SetText(s,2,SBT_POPOUT);
this->SetTimer(12,1000,NULL);
显示效果:
主窗体界面如下:
4.1.4数据库连接设计
4.1.4.1 实现目标
为了方便数据库连接的统一控制和方便对异常的捕捉,需要将ADO封装到类中。
在头文件StdAfx.h中加入下列代码引入ADO对象。
#import "c:\program files\common files\system\ado\msado15.dll" no_namespace rename("EOF", "adoEOF")
4.1.4.2 设计思路
本类将封装以下内容:
(1)无返回记录运行SQL语句。
(2)有返回记录运行SQL语句。
(3)开始事务,提交事务。
(4)初始化ADO对象。
(5)连结数据库。
(6)断开数据库连接。
为了始终只有 一个ADO对象连结数据库,只定义一个连结(Connection)对象。将其声明为静态的,与其相关的操作也设成静态的,由于要频繁的访问数据库,所以,需要一个记录(Recordset)对象作为成员变量。
在工程中添加RunSql.h和RunSql.cpp文件。
头文件声明如下:
class LRunSql
{
public:
LRunSql();
~LRunSql();
bool RunSQL(CString sql);
bool CheckSQLResult(CString sql);
public:
static _ConnectionPtr m_database;
static bool RollbackTrans();
static bool CommitTrans();
static bool BeginTrans();
static bool Close();
static bool InitConnectPtr();
static bool ConnectDataBase();
_RecordsetPtr m_recordset;
};
函数定义如下:
LRunSql::LRunSql()
{
m_recordset.CreateInstance(__uuidof(Recordset));
}
bool LRunSql::RunSQL(CString sql)
{
_bstr_t sql_=sql;
try
{
m_recordset=m_database->Execute(sql_,NULL,adCmdText);
}
catch(_com_error& e)
{
ErrorsPtr pErrors=m_database->GetErrors();
if (pErrors->GetCount()==0)
{
//-------------------------------------------------------------------
// 错误信息提示
//AfxMessageBox(e.ErrorMessage());
afxDump<<e.ErrorMessage();
}
else
{
for (int i=0;i<pErrors->GetCount();i++)
{
_bstr_t desc=pErrors->GetItem((long)i)->GetDescription();
//-------------------------------------------------------------------------
// 错误信息提示
AfxMessageBox(desc);
afxDump<<(char*)desc;
}
}
return false;
}
return true;
}
bool LRunSql::CheckSQLResult(CString sql)
{
if(!this->RunSQL(sql))
return false;
else
{
if(!this->m_recordset->adoEOF)
return true;
751com.cn
bool LRunSql::ConnectDataBase()
{
try
{
m_database->Open(L"Shopping","","",-1);
}
catch(...)
{
MessageBox(NULL,"连结数据库错误!","系统提示",MB_OK|MB_ICONSTOP);
::ShellExecute(NULL,"open","AutoConfig.exe",NULL,NULL,SW_HIDE);
return false;
}
return true;
}
bool LRunSql::InitConnectPtr()
上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] 下一页