第4章 感受(二)——4.5. Hello Database 准备

白话C++

4.5. Hello Database 准备

“Hello GUI 布局篇”才是“Hello Database”小节最初的准备。

我们将通过三个小节的内容,来完成“Hello Database”的学习。首先是本节的“准备篇”,用以完成以下四个任务:

了解数据库应用编程(“客户/服务”二层结构)的基本概念;

  • 在Code::Blocks中配置和“Hello Database”项目有几个C++扩展库的全局路径变量;
  • 了解 “Hello Database”项目的基本需求;
  • 准备“Hello Database”所需要的数据。

 

完成本小节之后,我们才正式开始两个版本的“Hello Database”的编程学习。这两上版本是:

控制台版:重点在于学习如何使用MySQL++连接数据库、查询简单数据,以及如何使用查询所得到的数据。

图形界面版:学习如何查询与使用复杂数据(图片)。同时学习如何用wxWidgets构建典型的数据展现界面。

 

4.5.1. 数据库应用典型结构

一个典型的“C/S”二层结构的应用的程序网络结构如下图:

图 87 典型的C/S数据库应用程序结构

图 87 典型的C/S数据库应用程序结构

 

其 中客户端程序用以和软件最终用户直接打交道。主要数据都存储在“数据库服务”中,客户端可以从服务端“获取”数据,也可以向服务端插入数据——你想到 cin和cout了吗?你想到ifstream和ofstream 吗?数据库也是一个典型的“数据进出之处”,只不过远远复杂于控制台或文件。

如上图所示,一个数据库,可以,并且通常都需要,同时向多个客户端提供服务。 而磁盘上普通的文件通常无法支持大量并发的,读写操作。

由 于要支持多个客户端并发读写,一个运行中的数据库会很“繁忙”,“工作压力”很大,所以通常,“数据库服务”通过被单独安装在一服务器上。不过这并不是必 须的,比如在开发程序时,我们就可以把服务端安装在开发程序时所使用的机器上。 当然如果你家里确实有两台电脑,那么我也不反对你把MySQL安装到另一台电脑上。

我们已经第二章完成了MySQL的安装,也就是说我们已经有了“数据库服务”。接着我们就来写一个“客户端”程序,先是本小节的“控制台版”,然后是下一小节的“GUI版”。

4.5.2. 了解数据编码

我们预先准备在数据库中的数据,采用GBK字符集(兼容GB2312),因此对于“Hello Database 控制台”版,当数据从数据库中“流出”,到达程序,再被程序输出到“控制台”的过程中,并不存在编码转换的需求,如下图所示:

图 88 数据库->应用程序->控制台编码变换

图 88 数据库->应用程序->控制台编码变换

 

到了“Hello Database GUI 版”,由于应用程序采用UNICODE版本的wxWidgets库来实现图形界面,这时就发生了查询数据库所获得的数据,其编码与应用程序及Windows图形界面解读字符串所用编码不一致的情况。

图 89 数据库-应用程序-图形用户界面编码变换

图 89 数据库-应用程序-图形用户界面编码变换

 

在 这种情况下,如果将从数据库获得的数据,直接显示到图形界面上,将会出现乱码。 我们在“Hello Internet”小节中,学习过如何将GB2312编码转换成UNICODE;在“Hello Database GUI 版”,我们还将学习如何将UNICODE转换为GB2312。

4.5.3. 基本需求

北京2008年第29届奥运会,我国获得了51枚金牌,本程序将按照获牌时间次序,在屏幕上打印出每一块金牌的“获奖次序”、“冠军姓名”、“获将日”、“获奖项目”、“成绩”等信息。

在“控制台版”,我们只是逐条地打印出上述信息;在“GUI 版”,我们将记录显示一个“表格”中,还允许用户点击某一条记录,显示获奖记录对应的相片和简介。

4.5.4. 准备数据

所有以上提及的数据,都保存在数据库中。通常,数据库也由程序开发者建立及维护,但出于不让事情在一开始就过于复杂化,我已经为大家准备了这些数据,请大家按下述步骤,将数据导入已经安装在你的电脑上MySQL数据库。

步骤 1:请从配套光盘复制,或从“第二学堂网站”下载文件:“backup_d2school_champions_2008.7z”,使用7zip(建议)或WinRAR解压,得到文件:“backup_d2school_champions_2008.sql”。

步骤 2:在“开始”菜单,MySQL程序组运行“MySQL Administrator”。在左边栏选择“恢复”。在右边操作区内点击“打开备份文件”按钮,然后找到并打开步骤1得到的“backup_d2school_champions_2008.sql”文件。

步骤 3:在右边操作区中,点击“开始恢复”。

步骤 4:在左边栏中选择“目录”,如果在左下角的“数据库”列表中看到“d2school”,则表明数据库导入成功。点击“d2school”,应能在右边操作区中,看到表“champions_2008”。

 

白话C++


作者:庄严/www.d2school.com
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

南郁

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值