描述:
MFC中连接mysql的API
请大神讲下详细的。VS库怎么配置mysql. 以及MYSQL的api连接,以及操作增删查改。VS好像要添加mysql的文件,才可以。请留下详细的。以及开始如何初始化连接,连接好了,如何对数据库增删查改。请大神留下详细的,网上复制的就不要了,谢谢。说不明白的也不要留言,300分,我发3条,你每个里面复制黏贴下。我把分都给你。
解决方案1:
安装目录下找到这2文件夹,一个是放头文件的,一个是dll和lib。把这2文件夹拷贝到你的程序目录下。
然后在工程里设置,c/c++常规配置头文件目录。连接器配置lib的目录,
配置好目录需要添加lib。
然后就可以引用头文件了
这是我原来的类,直接复制给你。里面只有部分是必要的,其他的虽然没用,但是可以当例子。
.h文件内容
#ifndef _MYSQL_CONTROL_
#define _MYSQL_CONTROL_
#include <afx.h>
#include <WinSock2.h>
#include "mysql.h"
#include "resource.h" // 主符号
#include <vector>
#include <map>
#ifndef __AFXWIN_H__
#error "在包含此文件之前包含“stdafx.h”以生成 PCH 文件"
#endif
#pragma comment(lib,"wsock32.lib")
#pragma comment(lib,"libmysql.lib")
using namespace std;
class MySql_Control
{
private:
MYSQL* mysql; //必要
public:
MYSQL_RES *m_result; //必要
MYSQL_ROW m_row;//必要
public:
//void(*SetPata)();
//MySql_Control(void(*SetPata)());
MySql_Control();
MySql_Control(char* ip, char* port, char* Db, char* user, char* passwd);//必要
~MySql_Control();
public:
bool ConnMysql(char* host, char* port, char* Db, char* user, char* passwd);//必要
void CloseMysqlConn();//必要
bool ExcuteSql(char* strSQL);//必要
MYSQL_RES* QuerySql(char* strSQL, MYSQL_RES* pMySql_Res);//必要
int DeleteData(char* SQL, char* Msg);
int UpdateData(char* SQL, char* Msg);
int InsertData(char* SQL, char* Msg);
CString SelectData(char* SQL, char* Msg, char RowSpace = 0x06, char ColumnSpace = 0x05);
CString SelectData(char* SQL, char* Msg, vector<CString*>* Data, char ColumnSpace = 0x05);
int Query(char* SQL,CStringArray * Results);
};
#endif
这是.cpp文件
#include "stdafx.h"
#include "MySql_Control.h"
#include <iostream>
//using namespace std;
#pragma comment(lib,"ws2_32.lib")
MySql_Control::MySql_Control()
{
//ConnMysql(MysqlConnectInfo::cMIP, MysqlConnectInfo::cMPort, MysqlConnectInfo::cMDB, MysqlConnectInfo::cMUser, MysqlConnectInfo::cMPwd);
}
MySql_Control::MySql_Control(char* host, char* port, char* Db, char* user, char* passwd)
{
ConnMysql(host, port, Db, user, passwd);
}
MySql_Control::~MySql_Control()
{}
bool MySql_Control::ConnMysql(char* host, char* port, char* Db, char* user, char* passwd)
{
//if (mysql_init(mysql) == NULL)
//{
// char* Msg = "inital mysql handle error!";
// return false;
//}
mysql = mysql_init(NULL);
if (mysql_real_connect(mysql, host, user, passwd, Db, atoi(port), NULL, CLIENT_MULTI_RESULTS) == NULL)
{
char* Msg = "Failed to connect to database:Error!";
return false;
}
if (mysql_set_character_set(mysql, "GBK") != 0)
{
char* Msg = "mysql_set_charater_set_Error!";
return false;
}
return true;
}
bool MySql_Control::ExcuteSql(char* strSQL)
{
bool bResult = false;
if (mysql_query(mysql, strSQL) != 0)
{
bResult = false;
return bResult;
}
return true;
//m_result = mysql_store_result(mysql);
//if (m_result == NULL)
//{
// bResult =false;
//}
//return bResult;
}
MYSQL_RES* MySql_Control::QuerySql(char* strSQL,MYSQL_RES* pMySql_Res)
{
if (pMySql_Res != NULL)
{
mysql_free_result(pMySql_Res);
}
if (mysql_query(mysql, strSQL) != 0)
{
return NULL;
}
pMySql_Res = mysql_store_result(mysql);
return pMySql_Res;
}
CString MySql_Control::SelectData(char* SQL, char* Msg, char RowSpace, char ColumnSpace)
{
MYSQL_ROW m_row;
MYSQL_RES *m_res;
char sql[2048];
sprintf_s(sql, SQL);
int rnum = 0;
char rg = RowSpace; //行隔开
char cg = ColumnSpace; //字段隔开
if (mysql_query(mysql, sql) != 0)
{
Msg = "select ps_info_Error!";
return _T("");
}
m_res = mysql_store_result(mysql);
if (m_res == NULL)
{
Msg = "select username Error!";
return _T("");
}
CString str =_T("");
while (m_row = mysql_fetch_row(m_res))//mysql_fetch_row
{
int nCols = mysql_num_fields(m_res);
for (int i = 0; i < nCols; i++)
{
str += m_row[i];
str += cg;
}
str += rg;
rnum++;
}
mysql_free_result(m_res);
return str;
}
CString MySql_Control::SelectData(char* SQL, char* Msg, vector<CString*>* Data, char ColumnSpace)
{
MYSQL_ROW m_row;
MYSQL_RES *m_res;
MYSQL_FIELD *fd;
//map da;
char sql[2048];
sprintf_s(sql, SQL);
int rnum = 0;
char rg = 0x06; //行隔开
char cg = { 0x05 }; //字段隔开
if (mysql_query(mysql, sql) != 0)
{
Msg = "select ps_info_Error!";
return _T("");
}
m_res = mysql_store_result(mysql);
if (m_res == NULL)
{
Msg = "select username Error!";
return _T("");
}
vector< CString >strField;
vector<CString*> strData;
CString str;
while (m_row = mysql_fetch_row(m_res))//重复读取行,把数据放入列表中,直到row为NULL
{
for (int i&