VC|简单数据库应用程序开发(vc数据库编程实例)

1 数据库逻辑设计

1.1 新建数据库notes.mdb

将数据库保存到VC项目的当前目录下。

1.2 在数据库中新建表records,并添加三个,如下图所示:

VC|简单数据库应用程序开发(vc数据库编程实例)

2 公共模块设计

在系统程序设计中封装一些常用的方法和事件,可以让编程起得事半功倍的效果。公共类可以减少重复代码的编写,有利于代码维护。本系统创建一个公共类ADOConn,主要用于访问Microsoft Access数据库,在其他代码编写时,只需调用相应的方法即可。

2.1 新建ADOConn类:“插入”→“类”,如下图所示:

VC|简单数据库应用程序开发(vc数据库编程实例)

单击“确定”后,系统会自动建立名为ADOConn的.h和.cpp文件;

2.2 在头文件ADOConn.h中导入一个动态链接库、添加成员变量、方法声明

#import \”C:Program FilesCommon FilesSystemadomsado15.dll\”no_namespace

rename(\”EOF\”,\”adoEOF\”)

_ConnectionPtr m_pConn; //添加一个指向connection对象的指针

_RecordsetPtr m_pRs; //添加一个指向Recordset对象的指针

BOOL Executesql(_bstr_t bstrSQL);

_RecordsetPtr& GetRecordSet(_bstr_t bstrSQL);

void ExitConn();

void OnInitADOConn();

2.3 在头文件ADOConn.cpp中添加成员方法

void ADOConn::OnInitADOConn() //打开数据库连接

{

try

{

m_pConn.CreateInstance(\”ADODB.Connection\”);

m_pConn->ConnectionTimeout=3;

m_pConn->Open(\”Provider=Microsoft.Jet.OLEDB.4.0;Data Source=notes.mdb\”,\”\”,\”\”,adModeUnknown);

}

catch(_com_error e)

{

AfxMessageBox(e.Description());

}

}

void ADOConn::ExitConn() //关闭数据库连接

{

if(m_pRs!=NULL)

m_pRs->Close();

m_pConn->Close();

}

_RecordsetPtr& ADOConn::GetRecordSet(_bstr_t bstrSQL) //打开并获得记录集

{

try

{

if(m_pConn==NULL)

OnInitADOConn();

m_pRs.CreateInstance(\”ADODB.Recordset\”);

m_pRs->Open(bstrSQL,m_pConn.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);

}

catch(_com_error e)

{

AfxMessageBox(e.Description());

}

return m_pRs;

}

BOOL ADOConn::ExecuteSQL(_bstr_t bstrSQL) //执行数据库语句

{

try

{

if(m_pConn==NULL)

OnInitADOConn();

m_pConn->Execute(bstrSQL,NULL,adCmdText);

return true;

}

catch(_com_error e)

{

AfxMessageBox(e.Description());

return false;

}

}

3 主窗体设计

主窗体是程序与用户交互的界面,其简洁、美观的呈现直接关系到用户的使用体验。

3.1 相关控件及布局如下图所示:

VC|简单数据库应用程序开发(vc数据库编程实例)

类NoteDB对应的头文件和cpp文件为NoteDB.h和NoteDB.cpp。

3.2 控件关联的变量:

CRichEditCtrl m_contents;

CString m_classify;

CString m_summary;

CString m_status;

3.3 在NoteDB.h中包含公共类

#include \”ADOConn.h\”

4 控件按钮代码设计

控件按钮主要完成控件与数据库的数据交换,代码如下:

//AddNew

void NoteDB::OnButton1()

{

UpdateData(true);

CString m_contents2;

UpdateData(1);

CEdit *edit1=(CEdit*)GetDlgItem(IDC_RICHEDIT1);

edit1->GetWindowText(m_contents2);

m_contents2.TrimLeft();

m_contents2.TrimRight();

m_AdoConn.OnInitADOConn();

CString sql;

if(m_contents2==\”\”)

{

m_status = \”内容不能为空!\”;

}

else

{

sql.Format(\”insert into records(classify,summary,contents)values(\’%s\’,\’%s\’,\’%s\’)\”,m_classify,m_summary,m_contents2);

m_AdoConn.ExecuteSQL((_bstr_t)sql);

m_AdoConn.ExitConn();

m_classify = \”\”;

edit1->SetWindowText(\”\”);

m_summary = \”\”;

m_status = \”New Record Inserted in notes.mdb\’s table Records!\”;

}

UpdateData(false);

}

//Query

void NoteDB::OnButton2()

{

CString m_contents2;

UpdateData(1);

CEdit *edit1=(CEdit*)GetDlgItem(IDC_RICHEDIT1);

edit1->GetWindowText(m_contents2);

m_contents2.TrimLeft();

m_contents2.TrimRight();

m_AdoConn.OnInitADOConn();

CString sql = \”select * from records\”;

m_pRs = m_AdoConn.GetRecordSet((_bstr_t)sql);

m_pRs->MoveFirst();

while(m_pRs->adoEOF==0) //判断记录是否为空,EOF表示最后一个记录之后。

{

CString classify2=(char*)(_bstr_t)m_pRs->GetCollect(\”classify\”);

m_classify = classify2;

CString summary2=(char*)(_bstr_t)m_pRs->GetCollect(\”summary\”);

m_summary = summary2;

CString contents2=(char*)(_bstr_t)m_pRs->GetCollect(\”contents\”);

edit1->SetWindowText(contents2);

m_pRs->MoveNext();

}

//m_pRs->MoveFirst();

m_status = \”Records Retrieved\”;

m_AdoConn.ExitConn();

UpdateData(false);

}

//clear

void NoteDB::OnButton3()

{

CEdit *edit1=(CEdit*)GetDlgItem(IDC_RICHEDIT1);

m_classify = \”\”;

m_summary = \”\”;

edit1->SetWindowText(\”\”);

m_status = \”All cleared!\”;

UpdateData(false);

}

-End-

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

(0)
上一篇 2024年5月1日 上午9:58
下一篇 2024年5月1日 上午10:10

相关推荐

  • 党内激励关怀帮扶制度(党内激励关怀帮扶制度2022)

    党内激励关怀帮扶制度 第一章 总 则 第一条 为认真贯彻落实基层党组织标准化建设对建立党内激励、帮扶、关怀机制要求,切实做好党内激励、帮扶、关怀工作,加强党支部基层组织建设,增强党…

    科研百科 2023年9月11日
    184
  • 业务流程管理bpm

    业务流程管理(Business Process Management,BPM)是一种用于优化和自动化企业业务流程的方法论。随着现代信息技术的发展,BPM已经成为企业管理中不可或缺的…

    科研百科 2024年9月16日
    22
  • 项目管理考勤系统

    项目管理考勤系统 随着现代项目管理的日益普及,项目管理考勤系统已经成为了许多企业用于管理员工考勤的重要工具。一个好的项目管理考勤系统可以帮助企业更好地管理员工,提高工作效率,减少人…

    科研百科 2024年12月15日
    0
  • 党建工作“有形化”强基固本促发展

    文|李琴 来源|《国企》杂志2023年3月号 习近平总书记在全国国有企业党的建设工作会议上强调,要坚持服务生产经营不偏离,以企业改革发展成果检验党组织的工作和战斗力。中粮集团把党建…

    科研百科 2023年10月20日
    180
  • 开好护理科研分享会,这样做就对了(护理科研讲座)

    来源中国军网 向着护理科研高地挺进 ——解放军总医院第一医学中心消毒供应室“护理科研学习之窗”侧记 1月14日下午,解放军总医第一医学中心消毒供应室首次“护理科研学习之窗”在该室学…

    科研百科 2024年4月21日
    86
  • 项目管理系统投产

    项目管理系统投产:提高企业效率的利器 随着现代企业的快速发展,项目管理系统已经成为提高项目管理水平、降低项目风险、提高生产效率的关键因素。在现代项目中,项目管理系统可以帮助企业管理…

    科研百科 2024年12月14日
    0
  • 建设项目管理单位

    建设项目管理单位 建设项目管理单位是项目管理的重要组成部分,负责项目的规划和实施,确保项目按时按质完成。一个好的建设项目管理单位可以使得项目获得成功,降低风险,提高效益。 建设项目…

    科研百科 2024年7月22日
    49
  • 十大进销存管理软件有哪些(十大进销存管理软件)

    进销存管理软件是用于管理企业进销存的软件,能够帮助企业进行商品采购,销售,库存管理等工作,提高企业的管理效率和准确性。随着企业的发展,进销存管理软件已经成为了企业必备的管理软件之一…

    科研百科 2024年8月28日
    41
  • 弱电丨图文讲解智能建筑弱电各个系统(常见的建筑弱电系统)

    智能建筑弱电系统介绍 智能化弱电系统的总体功能主要可以从以下几个方面来体现保证大楼内的所有机电设备的正常运行:为大楼内人员提供人身、财产安全保障舒适;为大楼内部用户提供舒适、便捷的…

    科研百科 2022年9月6日
    236
  • ITIL 服务台:ITSM帮助员工创建实践

    IT 基础架构库 (ITIL) 已建立最佳实践和运营框架,帮助组织提供高效可靠的服务管理流程。 ITIL 一直很重要,通常对组织有益,但仍有一些 ITIL 核心元素为有效的 ITS…

    科研百科 2022年12月1日
    166