基于MYSQL的医院综合信息管理系统设计报告 下载本文

对比图: 付款前:

付款后:

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