1.前言
本章并不会教你如何学会使用某一个具体的数据库。
如果需要可以参考本站的其它教程,对于仅仅只是应用来说,它并不复杂,只是有点繁琐而已,需要记忆的东西比较多。
本文的目的是尝试从比较宏观的角度来看待数据库,以及在不同的地方,使用合适的数据库。
2.理解数据库
首先我们还是要来理解一下数据库的本质。
看数据库这个名字,我们就能看出一二,数据库即数据的库存,用于数据的存储与取出,乃至一些更高级的操作。
我们最常见的数据库,可能就是我们windows
电脑上自带的注册表了(不知道如何打开?浏览器搜一搜):
注册表里面就存储了我们电脑所有的信息,在一些时候会进行写入,同时有些时候会进行读取操作,因为它是独立于各个应用程序的。
独立于应用程序,这一点很重要,即一个数据库,可以被不同程序访问,它并不属于某个应用程序。
比如我们常用的QQ,微信,为什么我们登录各种游戏,很多都可以用QQ、微信登录?
那就是因为它们可以向你申请权限来访问腾讯存储你信息的数据库,即它们也可以通过一些腾讯提供的接口,来访问腾讯的数据库。
3.配置文件
在真正使用数据库前,要搞懂自己是否需要数据库,因为即使是最简单的数据库,操作难度都比较高,且都需要一定的条件。
比如我们现在需要写一个应用程序,仅仅只是需要记录一下用户的设定。
这种很常见,比如程序启动时用什么主题、有没有声音、是否弹窗、上次用户的操作记录等等需要记录的信息。
那此时用数据库就大可不必了,因为你完全可以将这些信息写入一个文件,然后在下次程序启动时读出即可。
除了这种你自己设计格式来读取、写入的数据文件,windows
其实有一种专门的配置文件用来记录信息,也许你见过:
这种文件以.ini
结尾,其格式十分简单:
之所以它很常见,就是因为这是window自带的一种格式,有现成的函数可以让我们使用这种格式,所以下面我们首先就来使用一下这种格式文件。
随便建立一个控制台项目即可:
#include<iostream>
#include<Windows.h>
using namespace std;
int main() {
WritePrivateProfileStringA("main", "test1", "www.kucoding.com", ".\\1.ini");
WritePrivateProfileStringA("main", "test2", "hah", ".\\1.ini");
WritePrivateProfileStringA("main", "test3", "rebr", ".\\1.ini");
WritePrivateProfileStringA("second", "test4", "vferg", ".\\1.ini");
WritePrivateProfileStringA("second", "test5", "we23v", ".\\1.ini");
WritePrivateProfileStringA("second", "test6", "ntres", ".\\1.ini");
WritePrivateProfileStringA("second", "test7", "cewef", ".\\1.ini");
}
对于写入配置文件,一般我们只需要调用WritePrivateProfileStringA这个函数:
BOOL WritePrivateProfileStringA(
[in] LPCSTR lpAppName, //节名称
[in] LPCSTR lpKeyName, //键名
[in] LPCSTR lpString, //值名
[in] LPCSTR lpFileName //进行写入的文件名(注意要写成相对路径或者绝对路径的格式,直接写文件名会失败)
);
上面代码的执行结果:
节名称就是[main]
与[second]
这种,键名就是test1
、test2
等等,值名就是键名后面等于号紧跟的内容。
这是存取数据的过程,非常简单,当然也还有读出数据的过程:
#include<iostream>
#include<Windows.h>
using namespace std;
int main() {
char buf[0xFF];
GetPrivateProfileStringA("main", "test1", "", buf, 0xFF, ".\\1.ini");
cout << buf << endl;
GetPrivateProfileStringA("main", "test2", "", buf, 0xFF, ".\\1.ini");
cout << buf << endl;
GetPrivateProfileStringA("main", "test3", "", buf, 0xFF, ".\\1.ini");
cout << buf << endl;
GetPrivateProfileStringA("second", "test4", "", buf, 0xFF, ".\\1.ini");
cout << buf << endl;
GetPrivateProfileStringA("second", "test5", "", buf, 0xFF, ".\\1.ini");
cout << buf << endl;
GetPrivateProfileStringA("second", "test6", "", buf, 0xFF, ".\\1.ini");
cout << buf << endl;