数据库安装
数据库使用的是mysql-5.7.17
可以到网上自行下载 ,请完全安装,这样才会还有C++API
Navicat for MySQL 管理数据库
下载地址
http://download.csdn.net/download/osean_li/10033818
没有采用 QT中自带的操作Mysql的类,而是使用Mysql自带C++API进行封装。
/*************************************************************************
> File Name: CMySQL.h
> Author: osean_li
> Mail: lht1205613211@163.com
> Created Time: 2017年09月24日 星期日 11时27分
************************************************************************/
#pragma once //保证头文件被编译一次
#include <windows.h>
#include <mysql.h>
#include <vector>
#include <iostream>
using namespace std;
// 定义MySQL连接信息
typedef struct
{
char* server; //主机名
char* user; //用户名
char* password; //密码
char* database; //数据库名
int port; //端口号
}MySQLConInfo;
class CMySQL
{
public:
CMySQL(void);
public:
~CMySQL(void);
public:
/*************************************************
Function: SetMySQLConInfo
Description: 设置连接信息
server: 主机名
username: 用户名
password: 密码
database: 数据库名
port: 端口号
*************************************************/
void SetMySQLConInfo(char* server, char* username, char* password, char* database, int port);
/*************************************************
Function: MysqlConnect()
Description: 连接数据库
*************************************************/
bool MysqlConnect();
/*************************************************
Function: MysqlClose()
Description: 关闭连接数据库
*************************************************/
void MysqlClose();
/*************************************************
Function: ErrorIntoMySQL()
Description: 错误消息
*************************************************/
void ErrorIntoMySQL();
/*************************************************
Function: getDatafromDB()
Description: 读取数据
Querystr: SQL语句
data: 读出的数据
*************************************************/
bool getDatafromDB(const std::string& Querystr, std::vector<std::vector<std::string> > & data);
/*************************************************
Function: writeDataToDB()
Description: 写入数据
Queryst: SQL语句
*************************************************/
bool writeDataToDB(const std::string& Queryst);
/*************************************************
Function: createDatabase()
Description: 判断数据库是否存在,不存在则创建数据库,并打开
dbname: 数据库名
*************************************************/
bool createDatabase(std::string& dbname);
void freeResult(void);//释放保存在该连接的操作结果集
MYSQL_ROW getRow(void); //获取行
//获取结果集的列数
int getColNum(void);
//获得field的数量
int getFieldNum(void);
void MysqlEnd(); //结束MYSQL库的使用
public:
int m_ErrorNum; // 错误代号
const char* m_ErrorInfo; // 错误提示
private:
MySQLConInfo m_MysqlConInfo; // 连接信息
MYSQL m_MysqlInstance; // MySQL对象 ,该结构代表1个数据库连接的句柄。几乎所有的MySQL函数均使用它。
MYSQL_RES *m_Result; // 该结构代表返回行的查询结果
MYSQL_FIELD *fields; // 结果集的列信息
MYSQL_DATA *data; // 结果集的数据
MYSQL_ROW row; // 非缓冲的时候用到
MYSQL_ROW m_CurrentRow; //mysql_store_result时会用到。当前行
};
下面说说对API的封装逻辑
/*************************************************
单线程程序的数据库访问
单线程应用程序访问MySQL数据库相对简单,其过程包含以下几步:
1 通过调用mysql_library_init(),初始化MYSQL库
2 通过调用mysql_init()初始化连接处理程序,并通过调用mysql_real_connect()连接到服务器
3 发出SQL语句并处理其结果
4 通过调用mysql_close(),关闭与MYSQL服务器的连接
5 通过调用mysql_library_end(),结束MYSQL库的使用
*************************************************/
使用Qt调用要在pro中加入
INCLUDEPATH += ./include
LIBS += -L$$PWD/lib/opt -llibmysql
QT 操作数据库
这个是要把C++API包含进来
使用VS2013 调用
分别要把Mysql C++ API 包含进来
libmysql.dll 要放在工程目录下
下面是下载目录
http://download.csdn.net/download/osean_li/10034784
如果有问题可以给我留言,对你有帮助就点赞吧!