对比图: 付款前:
付款后:
21
六、总结:
通过这次数据库大作业,我们熟悉了vs2010的数据库ADO编程。对于它的添加,修改,删除步骤都有了较大的理解。在此次作业当中遇到两大问题。一是:数据库连接问题,本来开始准备用access做后台,可是不知道为什么我的电脑一直连接不上,于是改用了MYAQL连接。二是:在是使用记录集指针的问题_RecordsetPtr m_pRecordset,在实现添加,删除,修改,查询等操作时,只能执行一次就出现指针无效的结果。最后发现是在连接数据库时没有初始化COM,所以导致有指针无效的结果。然后,最让我开心的是,是实现总价的计算。我是用两个数组,amount[20],和price[20]记住数量和单价,利用for循环计算总价的。然
后,就是在 vs2010中字符之间的转换也是我们应该注意的问题。
总之,这次实验,让我们学到了许多课本上学不到的知识,也锻炼了我们的思考问题,解决问题的能力。
附录:医院综合信息管理系统源代码
// ADOConn.cpp : 实现文件
//
#include \#include \#include \
// CADOConn
CADOConn::CADOConn() { }
CADOConn::~CADOConn() { }
// CADOConn 成员函数
bool CADOConn::OnInitADOConn(void) { HRESULT hr;
22
::CoInitialize(NULL); try { hr=m_pDBConnection.CreateInstance(\ if(SUCCEEDED(hr)) { m_pDBConnection->ConnectionTimeout=3; //设置连接字符串 _bstr_t strConnection=\
Driver};SERVER=127.0.0.1;DATABASE=mydb;UID=root;PASSWORD=123456;PORT=3306\; hr=m_pDBConnection->Open(strConnection,\ } } catch(_com_error e)//捕捉异常 { CString temp; temp.Format(CString(\连接数据库错误信息:%s\ ::MessageBox(NULL,temp,CString(\提示信息\ return false; } return false; }
// 断开数据库连接
void CADOConn::ExitConnect(void) { if (m_pRecordset!=NULL) m_pRecordset->Close(); m_pDBConnection->Close(); //释放环境 ::CoUninitialize(); }
// 获取记录集
_RecordsetPtr& CADOConn::GetRecordSet(_bstr_t bstrSQL) { try { if(m_pDBConnection==NULL) OnInitADOConn(); m_pRecordset.CreateInstance(__uuidof(Recordset));
23
m_pRecordset->Open(bstrSQL,m_pDBConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText); }
catch(_com_error e) { CString temp; temp.Format(CString(\读取数据库错误信息:%s\ ::MessageBox(NULL,temp,CString(\提示信息\ } return m_pRecordset; }
// 执行SQL语句
bool CADOConn::ExecuteSQL(_bstr_t bstrSQL) { _variant_t RecordsAffected; try {
if(m_pDBConnection==NULL) OnInitADOConn(); m_pDBConnection->Execute(bstrSQL,NULL,adCmdText); return true; } catch(_com_error e) { CString temp; temp.Format(CString(\执行SQL语句错误信息:%s\ ::MessageBox(NULL,temp,CString(\提示信息\ return false; } }
// 返回记录集对象指针的SQL执行函数
_RecordsetPtr CADOConn::ExcuteSQLObj(_bstr_t bstrSQL) { try {
if(m_pDBConnection==NULL) OnInitADOConn();
m_pRecordset=m_pDBConnection->Execute(bstrSQL,NULL,adCmdText); } catch(_com_error e) {
24