首先,我是很反感使用vc++6.0的,但是呢,我国的大学生计算机方面的基础教学是永远跟不上“潮流”的,考虑到接下来的五六年里还是会有部分高校的同学仍旧会被老师要求用VC++6.0做课程设计,为了让你们也少走一些坑,所以写个笔记吧(装作认真的样子)
我在哔哩哔哩上传一个自己做的MFC版的通讯录视频教程,大家感兴趣的可以去看看http://www.bilibili.com/video/av17669542?share_medium=android&share_source=copy_link&bbid=266B7E4B-B6FC-42AB-972E-95F8A6C25BDD23663infoc&ts=1516379988138
1. 让你的VC++ 6.0支持sqlite3
首先,先把这三个文件下载好:https://pan.baidu.com/s/1micNdgO
分别是
sqlite3.h
sqlite3.lib
sqlite3.dll
这三个文件我是怎么得来的呢?如果你想知道的话就看下这一段吧:
sqlite3.h : 打开 http://www.sqlite.org/download.html ,下载源码文件然后解压,可以看到sqlite3.h这个文件(如果你想自己编译的话也可以自行编译成lib或者dll)
![]()
sqlite3.lib : 还是在上面那个官网下载地址,我下载的是32位的文件,解压之后你会看到sqlite3.dll和sqlite3.def两个文件
![]()
sqlite3.lib: 记得将你的vc++6.0的安装地址如 C:\Program Files (x86)\Microsoft Visual Studio\VC98\Bin 加入到系统的环境变量里面去,因为待会我们需要用到这个目录下的lib.exe程序,记得解压出来的sqlite3.def文件吗?打开命令行窗口(Win+R)并且进入该文件当前目录,然后输入指令 lib /def:sqlite3.def 就会在当前目录生成一个sqlite.lib文件
接下来就是配置VC++6.0了
将sqlite3.h添加到目录 C:\Program Files (x86)\Microsoft Visual Studio\VC98\Include下
(根据你自己的VC++6.0安装目录添加啊,你的安装目录不一定跟我的一样)
将sqlite3.lib添加到目录C:\Program Files (x86)\Microsoft Visual Studio\VC98\Iib下
为了保证可以运行,你还需要将sqlite3.dll加入到系统环境里面去,如果是32位电脑将sqlite3.dll添加到 C:\Windows\System32 如果是64位加入到C:\Windows\SysWOW64
如果你要把你做好的exe文件拷贝给别人使用,记得在这个exe文件同目录下添加sqlite3.dll这个动态链接库,但如果你是静态编译的话就不需要拷贝这个dll文件了
ok ,现在你的VC++ 6.0是可以使用sqlite数据库的库文件了。
你需要使用sqlite的话,下面这两句是必须的:
#include "sqlite3.h"
#pragma comment(lib,"sqlite3.lib")
2. 做一个基于控制台的通讯录
首先,你可以使用sqlite的一些工具先生成一个数据库test.db(对应main函数里的controller类声明的参数test.db),表名是telbook,其中,数据表的结构如下:
CREATE TABLE "main"."telbook" (
"id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
"name" TEXT NOT NULL,
"telphone" TEXT NOT NULL,
"email" TEXT,
"type" TEXT,
"remark" TEXT
);
偷懒直接把代码贴上来啦:
控制数据库的类的头文件controller.h
#include <iostream>
#include <string>
#include "sqlite3.h"
using namespace std;
#pragma comment(lib,"sqlite3.lib")
class SqlController
{
public:
sqlite3 *db;
string table;
string dbname;
SqlController(string c_dbname,string c_tablename)
{
table = c_tablename;
dbname = c_dbname;
}
//增加数据,成功返回1
int addData(string name,string telphone,string email,string type,string remark);
//根据手机号查询数据, 根据表的结构,如果有数据那么有两行,有6列,返回的值是个一维字符串数组,re[0 - 5]是字段
char ** getInfoByTel(string telphone);
//根据id获得信息
char ** getInfoById(int id);
//获取全部数据
char ** getAll(int &row);
//修改一条信息,成功返回1
int changeData(int id,string name,string telphone,string email,string type,string remark);
//删除一条信息,成功返回1
int deleteData(int id);
};
实现该类函数的源文件controller.cpp
#include "controller.h"
#include <sstream>
//增加数据
int SqlController::addData(string name,string telphone,string email,string type,string remark)
{
int rc;
const char *sql;
char *zErrMsg;
string s;
//判断数据库是否存在