友情提示:如果本网页打开太慢或显示不完整,请尝试鼠标右键“刷新”本网页!
VC语言6.0程序设计从入门到精通-第49部分
快捷操作: 按键盘上方向键 ← 或 → 可快速上下翻页 按键盘上的 Enter 键可回到本书目录页 按键盘上方向键 ↑ 可回到本页顶部! 如果本书没有阅读完,想下次继续接着阅读,可使用上方 "收藏到我的浏览器" 功能 和 "加入书签" 功能!
图 11…18 对话框界面
为对话框添加完控件后,需要设置各控件 ID,并为其添加变量。各控件的 ID 及其对应
的变量如表 11…14 所示。
·324 ·
…………………………………………………………Page 336……………………………………………………………
第 11 章 网络编程
表 11…14 各控件 ID 及对应变量
控件 ID 变量
MSm 控件 IDC_MSM CMSm m_m
接收数据 Edit IDC_RECEIVEDATA CString m_Receive
发送数据 Edit IDC_SENDDATA CString m_Send
选择串口下拉列表 IDC_BOLIST int m_Port (初始化为0 )
打开串口按钮 IDC_OPENPORT 无
关闭串口按钮 IDC_CLOSTPORT 无
发送按钮 IDC_SEND 无
在文件“MSmDlg。h ”的头部加入语句#include 〃msm1。h〃 ,然后为对话框类加入
成员函数 void Initm() ,来初始化 MSm 控件,其代码如下:
void CMSmDlg::Initm()
{
//设置串口
m_m。SetmPort(m_Port+1);
// 设置数据读取格式为二进制方式
m_m。SetInputMode(1);
// 设置传输参数
m_m。SetSettings(〃9600;n;8;1〃);
//缓冲区内有一个字符就可以接收
m_m。SetRThreshold(1);
// 指定接收缓冲区大小
m_m。SetInBufferSize(1024);
//指定发送缓冲区大小
m_m。SetOutBufferSize(1024);
// 清空接收缓冲区
m_m。SetInBufferCount(0);
// 打开串口
if(!m_m。GetPortOpen())
{
m_m。SetPortOpen(TRUE);
}
}
当选择下拉列表中的端口时,会激发 CBN_SELCHANGE 消息,为其添加响应函数,代
码如下:
void CMSmDlg::OnSelchangebolist()
{
// TODO: Add your control notification handler code here
CString m_str;
//得到下拉列表内容
GetDlgItemText(IDC_BOLIST; m_str);
·325 ·
…………………………………………………………Page 337……………………………………………………………
Visual C++ 6。0 程序设计从入门到精通
//得到串口号
m_Port = atoi(LPCTSTR(m_str))…1;
}
为“打开串口”按钮添加响应函数,代码如下:
void CMSmDlg::OnOpenport()
{
// TODO: Add your control notification handler code here
Initm();
}
为“关闭串口”按钮添加响应函数,代码如下:
void CMSmDlg::OnClostport()
{
// TODO: Add your control notification handler code here
if( m_m。GetPortOpen() )
{
// 关闭串口
m_m。SetPortOpen(0);
}
}
为“发送”按钮添加响应函数,代码如下:
void CMSmDlg::OnSend()
{
// TODO: Add your control notification handler code here
//得到发送 Edit 控件的数据
UpdateData(TRUE);
int Count=m_Send。GetLength();
//将发送数据传给 m_Array
CByteArray m_Array;
m_Array。RemoveAll();
m_Array。SetSize(Count);
for(int i=0;i 0)
{
//得到接收数据
m_input = m_m。GetInput();
str = (char*)(unsigned char*)m_input。parray…》pvData;
}
//清除字符串中的不必要字符
i = 0;
str1 = str;
while(i 《 k)
{
i++;
str1++;
}
*str1 =’0’;
str2 = (const char*)str;
//得到最终数据
m_Receive += (LPCTSTR)str2;
default:
break;
}
// 显示数据
UpdateData(FALSE);
}
至此,程序设计完成。运行两个程序,分别选择串口 1 和串口 2 ,然后收发数据,如图
·327 ·
…………………………………………………………Page 339……………………………………………………………
Visual C++ 6。0 程序设计从入门到精通
11…19 和图 11…20 所示。
图 11…19 串口发送数据 图 11…20 串口接收数据
11。6 本章小结
本章介绍了网络编程的基本知识及基本步骤,并且详细介绍了 WinSock 类。接着利用所
讲知识编程实现了一个网络聊天系统,最后利用 MSm 控件实现了简单的串口通信。相
信通过本章的学习,读者可以编写简单的网络应用程序,并会利用 MSm 控件进行简单
的串口数据传输。
·328 ·
…………………………………………………………Page 340……………………………………………………………
第 12 章 数据库开发
第 12 章 数据库开发
随着计算机技术的飞速发展,数据库的应用也越来越广泛。如今,数据库技术已经成为
计算机技术中的核心技术之一。本章首先简单介绍数据库的基本概念及用 Visual C++ 6。0 进
行数据库开发的几种相关技术,然后介绍 Access 数据库的建立和一些基本的 SQL 语句,最
后通过一个具体的实例来详细说明 ADO 技术在数据库开发中的应用。本章主要包括以下几
方面的内容:
o 数据库的基本概念及数据库的相关技术;
o Access 数据库的建立;
o 基本的 SQL 语句;
o 如何利用 ADO 技术进行数据库开发。
12。1 概述
数据库技术产生于 20 世纪 60 年代中期,是数据管理的最新技术,是计算机科学的重要
分支,它的出现极大的促进了计算机应用向各行业的渗透。本节将对数据库的概念,数据库
的相关技术以及如何开发数据库应用程序作一简单介绍。
12。1。1 数据库的基本概念
所谓数据库(Database ,简称 DB ),就是长期存储在计算机内的、有组织的、可共享的
数据集合。数据库中的数据按一定的数据模型组织、描述和存储,具有较小的冗余度,较高
的数据独立性和易扩展性,并可为各种用户共享。
有了数据和数据库,还要进行数据库的管理,不仅可以科学地组织这些数据并将其存储
在数据库中,而且还能高效地处理这些数据 。数据库管理系统(Database Management System ,
简称 DBMS )是位于用户和操作系统之间的一层数据管理软件。数据库在建立、运用和维护
时由数据库管理系统统一管理、统一控制。数据库管理系统使用户能方便的定义数据和操纵
数据,并能够保证数据的安全性、完整性、多用户对数据并发使用以及发生故障后的系统恢
复。
在很多情况下,人们所说的数据库实际上指的是数据库系统。数据库系统(Database
System,简称 DBS )是指在计算机系统中引入数据库后的系统构成,一般由数据库、数据库
管理系统(及其开发工具 )、应用系统、数据库管理员和用户构成。
设计数据库的核心问题就是数据模型的选择,常用的数据模型有层次数据模型、网状数
据模型、关系数据模型、实体联系数据模型和面向对象数据模型。现在常用的数据库有 SQL
Server、Oracle、DB2 、Sybase、MySQL 、Access 、FoxPro 等。
…………………………………………………………Page 341……………………………………………………………
Visual C++ 6。0 程序设计从入门到精通
12。1。2 数据库相关技术介绍
不管是功能简单的数据库,还是复杂的大型数据库系统,Visual C++都提供了一些编程
接口。一般来说,编程接口主要有以下 5 种:
1.ODBC API
ODBC 的全称是 Open DataBase Connectivity,即开放数据库互连。ODBC 是为了能让同
一应用程序访问不同的数据库管理系统而设计的,它实际上是一个不同类型数据库的通用接
口,用这些 API 编写的应用程序独立于 DBMS ,实现同一应用程序对不同 DBMS 的共享。
应用程序对数据库的操作是通过和各种 DBMS 相对应的 ODBC 驱动程序(Drive )来进行的,
对于不同的 DBMS ,用户只需安装相应的驱动程序,而不必更改应用程序本身。ODBC 为
SQL Server、ACCESS 、FoxPro 等都提供了驱动程序,使得用户可以使用 SQL 语句对数据库
进行直接的底层功能操作 。在使用 ODBC API 时,用户需引入的头文件为“sql。h ”、“sqlext。h ”
和“sqltypes。h ”。
作为一种数据库连接的标准技术,ODBC 主要有以下几个特点。
o ODBC 是一种使用 SQL 的程序设计接口。
o ODBC 的设计是建立在客户机/服务器体系结构基础之上的。
o ODBC 使应用程序避免了与数据源连接的复杂性。
o ODBC 的结构允许多个应用程序访问多个数据源,即应用程序与数据源的关系是多对
多的。
2 .MFC 的 ODBC 类
直接用 ODBC API 进行数据库开发是一件很繁琐的事情,因此在 MFC 1。5 后的版本里引
入了封装 ODBC 功能的类。通过这些类提供的与 ODBC 的接口,程序员可以不必理会 ODBC
API 中的繁杂处理而进行数据库操作。主要的 MFC ODBC 类有如下 5 个。
o CDatabase 类:一个 CDatabase 对象表示到数据源的连接,通过它可以操作数据源。要
用 CDatabase 类,首先要建立一个 CDatabase 对象,然后调用它的 OpenEx()函数建立
和数据源的连接。当结束对数据库的操作时,调用 Close()函数关闭连接。
o CRecordSet 类:一个 CRecordSet 对象就是一个记录集,它表示一个从数据源选择的一
组纪录的集合。
o CrecordView 类:提供了一个表单视图与某个记录集直接相连,利用对话框数据交换
机制(DDX )在记录集与表单视图的控件之间传输数据。
o CFieldExchange 类:支持记录字段数据交换(DDX ),即记录集字段数据成员与相应
数据库的表的字段之间的数据交换。
o CDBException 类:当发生错误时,许多 MFC ODBC 调用并不返回错误码,而是返回
一个 CDBException 对象。
3 .MFC 的 DAO 类
DAO 是 Database Access Object (数据访问对象)的简称。与MFC ODBC 类很类似,DAO
中几个主要的类分别为 CDaoDatabase、CDaoRecordSet、CDaoRecordView、CDaoFieldExchange
·330 ·
…………………………………………………………Page 342……………………………………………………………
第 12 章 数据库开发
和 CDaoException 。除了上面 5 个类以外,DAO 类还包括下面 3 个比较重要的类。
o CDaoWorkSpace :管理一个用户和数据库的会话。
o CDaoQueryDef :代表一个查询定义。
o CDaoTableDef :代表一个基本表或附加表所储存的定义,负责管理数据库中表的结构。
可以看到,DAO 的类名和 ODBC 的很相似,只是多了 D 、a、o 这 3 个字母,并且所有
的 DAO 的类都有前缀 Dao 。
通过 DAO 访问数据库和通过 ODBC 访问数据库是不同的,利用 ODBC 访问数据库是通
过各种 DBMS 相对应的 ODBC 驱动程序来实现的,而利用 DAO 访问数据库是通过微软公司
的 Jet 数据库引擎来实现的。
DAO 支持以下 4 个数据库选项:打开一个 Access 数据库(mdb 文件),直接打开一个
ODBC 数据源,通过 Jet 引擎打开一个 ISAM 类型的数据源,把外部表附属到 Access 数据库。
4 .MFC 的 OLE/DB
OLE/DB 是系统级的编程接口,它定义了一组 接口。这组接口封装了各种数据系
统的访问操作,同时也为数据使用方和数据提供方建立了标准。OLE/DB 还提供了一组标准
的服务组件,用于提供查询、缓存、数据更新、事务处理等操作,因此,数据提供方只需实
现一些简单的数据操作,在使用方就可以获得全部的数据控制能力。
OLE/DB 框架定义了应用的 3 个基本类:
o 数据提供程序 Data Provider :拥有自己的数据并以表格形式显示数据的应用程序。
o 使用者 Consumers :使用 OLE/DB 接口对存储在数据提供程序中的数据进行控制的应
用程序。
o 服务提供程序 Service Provider:数据提供程序和使用者的结合。
OLE/DB 虽然增加了操作的灵活性,但是有的时候这种灵活会使操作变得复杂。并且对
于初学者来说,OLE/DB 里面数十个密密麻麻的接口还是有些恐怖的。
5 .ADO 技术
相比前面 4 种技术,ADO 技术显得方便易学,这也是本章的重点,将在本章 12。4~12。6
节详细介绍。
12。1。3 数据库应用程序的开发步骤
数据库应用程序就是为用户提供一个可以满足其长期需求的软件产品 。成功地开发一个
数据库应用程序的关键之一就是要详细地定义用户的需求,然后再围绕用户的需求进行开发。
数据库应用程序的开发一般分如下 3 个步骤。
1.系统设计
系统设计阶段应当根据用户的需求,明确地描述数据库(数据库服务器端 )和应用界面
(客户机端)实现的功能,即决定哪些功能由服务器端实现,哪些功能由客户端实现。然后选
择合适的开发工具,比如 Visual C++ 、Delphi 、Power Builder 等。
·331 ·
…………………………………………………………Page 343……………………………………………………………
Visual C++ 6。0 程序设计从入门到精通
2 .系统实现
系统实现阶段的主要任务是使用某种开发工具(本书用 Visual C++ 6。0 )实现系统设计阶
段的思想,并进行调试。在系统设计阶段,通常要对数据库进行备份,以免破坏原来的数据
库。
3 .系统运行和维护
一个应用系统性能的优劣和效率的高低应当由用户来作出判断。应用程序在运行过程
中,用户会提出一些新的要求和建议,根据用户需求的变化,对原来程序进行一定的修改,
使其进一步得到完善和提高。
12。1。4 选择数据库管理系统的原则
当今数据库管理系统多种多样,可遵循一定的原则进行选择。
1.构造数据库的难易程度
需要分析数据库管理系统有没有范式要求,即是否必须按照系统所规定的数据模型分析
现实世界,建立相应的模型;数据库管理语句是否符合国际标准;有没有面向用户的易用的
开发工具;所支持的数据库容量,数据库的容量特性决定了数据库管理系统的使用范围。
2 .程序开发的难易程度
有无计算机辅助软件工程工具 CASE—计算机辅助软件工程工具可以帮助程序员根据
软件工程的方法提供各开发阶段的维护、编码环境,便于复杂软件的开发、维护。有无第 4
代语言的开发平台—第 4 代语言具有非过程语言的设计方法,不需要编写复杂的过程性代
码,易学、易懂、易维护。有无面向对象的设计平台—面向对象的设计思想与人类的逻辑
思维方式
快捷操作: 按键盘上方向键 ← 或 → 可快速上下翻页 按键盘上的 Enter 键可回到本书目录页 按键盘上方向键 ↑ 可回到本页顶部!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!