前两天用VS2013连接Mysql遇到了很多问题,上网搜了很多发现好多讲的并不清楚,于是乎我就想把我遇到的问题总结下来,帮助后来人少走点弯路。

    步骤:

      1:首先需要注意的是 Mysql版本是32位还是64位,如果是64位请将VS2013设置为 x64,具体设置为:右键项目->属性->在右上角有 “配置管理器” ->点击 修改为 x64

这么做的原因是接下来会用到 mysql 中有 libmysql.dll,而如果是64位的mysql,则该dll文件是64位的,正常的VS是用win32生成的是32位的,会导致无法调用!

 

      2:接下来进行配置,首先请网上下载 myqls,并进行相应的安装。这里就不说了,安装过程比较简单。但需要注意的是 安装的时候记住 root设置的密码。这个root是指登陆数据库时候用到

     配置过程:项目-》右键属性:

         1)"VS++目录"->“包含目录”   将其设置为MYSQL中的include 所在目录 ,例如我的是 :C:\Program Files (x86)\MySQL\MySQL Server 5.5\include

              "VS++目录“->"库目录"    将其设置这MYSQL中的lib所在目录,例如我的是: C:\Program Files (x86)\MySQL\MySQL Server 5.5\lib

   

        2)"C/C++"->”附加包含目录“  将其设置为 MYSQL 中的include 所在目录,依旧是 : C:\Program Files (x86)\MySQL\MySQL Server 5.5\include

  

       3)链接器->常规->“附加库目录”    将其设置为 MYSQL中的inclde 所在目录,依旧是:C:\Program Files (x86)\MySQL\MySQL Server 5.5\include

           链接器->常规->"输入" ->附加依赖项->填入  -> libmysql.lib    (注意该文件在mysql 的include文件夹下,程序在链接时候调用该 库文件)

  

至此,vs2013下的设置完毕!

 

 

    3:数据库部分

   1)开启 MYSQL数据库,在CMD下,输入: net start mysql    启动数据库

   2   再将当前路径转到:C:\Program Files (x86)\MySQL\MySQL Server 5.5\bin  下,输入   mysql -uroot  -p     然后让输入密码,这时输入当时安装mysql时的root密码。这时就进入了mysql下。

  3:建立一个数据库:   输入 create  database  message;     则生成一个数据库message,接下来我们就要用VS2013中的程序连接这个message数据库。

 

   4:在VS项目下,有如下代码:

 

首先stdafx.h  targetver.h  stdafx.cpp不需要管,在建立控制台项目的时候 会自动生成!

 

//CMysqlOperator.h
#pragma once
#include  "stdafx.h"
#include <windows.h>
#include<winsock.h>
#include<mysql.h>#include<string>
using namespace std;
#pragma comment(lib, "libmysql.lib")
class CMysqlOperator
{
public:
	//变量
	MYSQL mysql;	CMysqlOperator();
	~CMysqlOperator();	int ConnMysql(char* host, char* port, char* Db, char* user, char* passwd, char* charset, char* Msg);
	int DeleteData(char* SQL, char* Msg);	string CMysqlOperator::SelectData(char* SQL, int Cnum, char* Msg);
	int CMysqlOperator::UpdateData(char* SQL, char* Msg);
	int CMysqlOperator::InsertData(char* SQL, char* Msg);	void CloseMysqlConn();
};


///CMysqlOperator.cpp
 
 
#include "StdAfx.h"
#include "CMysqlOperator.h"
#include <string.h>
using namespace std;
CMysqlOperator::CMysqlOperator() {}
CMysqlOperator::~CMysqlOperator() {}
int CMysqlOperator::ConnMysql(char* host, char* port, char* Db, char* user, char* passwd, char* charset, char* Msg)
{
	if (mysql_init(&mysql) == NULL)
	{
		Msg = "inital mysql handle error!";
		return 1;
	}	if (mysql_real_connect(&mysql, host, user, passwd, Db, 0, NULL, 0) == NULL)
	{
		Msg = "Failed to connect to database:Error!";
		return 1;
	}	if (mysql_set_character_set(&mysql, "GBK") != 0)
	{
		Msg = "mysql_set_charater_set_Error!";
		return 1;
	}
	return 0;
}string CMysqlOperator::SelectData(char* SQL, int Cnum, char* Msg)
{
	MYSQL_ROW m_row;
	MYSQL_RES *m_res;
	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 "";
	}	m_res = mysql_store_result(&mysql);
	if (m_res == NULL)
	{
		Msg = "select username Error!";
		return "";
	}	string str("");
	while (m_row = mysql_fetch_row(m_res))
	{
		for (int i = 0; i < Cnum; i++)
		{
			str += m_row[i];
			str += cg;
		}
		str += rg;
		rnum++;
	}	mysql_free_result(m_res);
	return str;
}//插入数据
int CMysqlOperator::InsertData(char* SQL, char* Msg)
{
	char sql[2048];
	sprintf_s(sql, SQL);	if (mysql_query(&mysql, sql) != 0)
	{
		Msg = "Insert Data Error!";
		return 1;
	}
	return 0;
}//更新数据
int CMysqlOperator::UpdateData(char* SQL, char* Msg)
{
	char sql[2048];
	sprintf_s(sql, SQL);
	if (mysql_query(&mysql, sql) != 0)
	{
		Msg = "Update Data Error!";
		return 1;
	}
	return 0;
}//删除数据
int CMysqlOperator::DeleteData(char* SQL, char* Msg)
{
	char sql[2048];
	sprintf_s(sql, SQL);
	if (mysql_query(&mysql, sql) != 0)
	{
		Msg = "Delete Data Error!";
		return 1;
	}
	return 0;
}//关闭数据库连接
void CMysqlOperator::CloseMysqlConn()
{
	mysql_close(&mysql);}
 
// ConsoleApplication2.cpp : 定义控制台应用程序的入口点。  主函数 :
//#include "stdafx.h"
#include "CMysqlOperator.h"
#include<iostream>
using namespace std; 
int main()
{
	//char* host = "127.0.0.1";
	char *host = "localhost";     //表示本地数据库
	char* user = "root";
	char* port = "3306";
	char* passwd = "123456";
	char* dbname = "message";    //这是数据库
	char* charset = "GBK";
	char* Msg = "";	CMysqlOperator *mysqlOperator = new CMysqlOperator();
	if (mysqlOperator->ConnMysql(host, port, dbname, user, passwd, charset, Msg) == 0)
		cout << "连接数据库成功!";
	else
		cout << Msg;	cout << "why";
	getchar();	////查询
	//char* SQL = "SELECT userId, userName, passwd from userInfo";
	//string str = mysqlOperator->SelectData(SQL, 4, Msg);
	//if (str.length() > 0)
	//{
	//	cout << "查询成功@!" << endl;
	//	cout << str.data() << endl;
	//}
	//else
	//{
	//	cout << Msg;
	//}	////插入
	//SQL = "Insert into userInfo(userId, userName, passwd) values(2, '张三', '12');";
	//if (mysqlOperator->InsertData(SQL, Msg) == 0)
	//{
	//	cout << "插入成功!" << endl;
	//}
	////更新
	//SQL = "Update userInfo set userName = '改了' where userId = 2";
	//if (mysqlOperator->UpdateData(SQL, Msg) == 0)
	//{
	//	cout << "更新成功!" << endl;
	//}
	////删除
	//SQL = "Delete from userInfo where id = 2";
	//if (mysqlOperator->DeleteData(SQL, Msg) == 0)
	//{
	//	cout << "删除成功!" << endl;
	//}	//mysqlOperator->CloseMysqlConn();
	//getchar();	return 0;
}

 

点击运行就ok 了!  注意:运行的时候会提示 无法找到 “libmysql.dll"  ,解决的方法是  找到C:\Program Files (x86)\MySQL\MySQL Server 5.5\lib  下的 ”libmysql.dll“  将其复制到 你的 VS工程下的 debug下,因为正常上面会生成一个 CMysqlOperator.exe   ,该可执行文件在运行的时候会需要  ”libmysql.dll“文件!