您的位置:首页 > 编程语言 > C语言/C++

VS2012环境下C++连接mysql数据库

2015-12-10 16:04 267 查看
工具:vs2012,mysql5.0

操作系统:win64位

首先,打开vs2012新建一个c++工程(空工程就好,自己在源文件中添加一个cpp文件,用于写连接的代码),如下图所示:

 

设置一些引用文件的环境变量,点击项目->属性->vc++目录
然后“include目录”(包含目录)那把“C:\ProgramFiles\MySQL\MySQL Server 5.5\include”给加进来 
再然后“lib目录”(库目录)那里把“C:\ProgramFiles\MySQL\MySQL Server 5.0\lib”和“C:\ProgramFiles\MySQL\MySQL Server 5.0\lib\debug”也一起加进来。以上三个文件在mysql
的安装目录下(默认在C:\ProgramFiles,或有不同)

解释一下以上三个文件的作用:

在访问数据库时要调用mysql的头文件,在其安装目录的include文件夹里;

在编译和连接时:(转)lib是编译时需要的,dll是运行时需要的。 如果要完成源代码的编译,有lib就够了。 如果也使动态连接的程序运行起来,有dll就够 
  了。 在开发和调试阶段,当然最好都有。 一般的动态库程序有lib文件和dll文件。lib文件是必须在编译期就连接到应用程序中的,而dll 
   文件是运行期才会被调用的。如果有dll文件,那么对应的lib文件一般是一些索引信息,具体的实现在dll文件中。如果只有lib文件,那    么这个lib文件是静态编译出来的,索引和实现都在其中。静态编译的lib文件有好处:给用户安装时就不需要再挂动态库了。但也有缺    点,就是导致应用程序比较大,而且失去了动态库的灵活性,在版本升级时,同时要发布新的应用程序才行。 
1. 编译是通过静态链接库(lib)去找到接口的。
2. #pragma comment (lib, "libmysql.lib")
    #pragma comment (lib, "mysqlclient.lib")

基本上做完以后的工作就可以连接mysql数据库了!

测试代码如下:

#include <stdio.h>
#include <string.h>
#include <algorithm>
#include <iostream>
#include "winsock.h"
#include "mysql.h"
using namespace std;
#pragma comment (lib, "libmysql.lib")
#pragma comment (lib, "mysqlclient.lib")

int main()
{
//connectionparams
char *host = "localhost";
char *user = "root";//mysql的用户名
char *pass = "123456";//你的mysql服务器密码
char *db = "MySql";
unsigned int port = 3306; //server port
MYSQL *sock;
sock=mysql_init(0);
if(sock &&mysql_real_connect(sock,host,user,pass,db,0,NULL,0))
{
cout<<"connect mysqlsucceed!"<<endl;
}
else
{
cout<<"I'm sorry to tell you that you wrong!"<<endl;
}
getchar();
//input 1 or 2 or 3
return 0;
}


如果是32位操作系统以上步骤就足够了。我的电脑是64位,vs2012和mysql都是64位的,因此要修改一下项目的默认设置,否则会出现:

error LNK2019: 无法解析的外部符号 _mysql_real_connect@32,该符号在函数 _main 中被引用
error LNK2019: 无法解析的外部符号 _mysql_query@8,该符号在函数 _main 中被引用
error LNK2019: 无法解析的外部符号 _mysql_init@4,该符号在函数 _main 中被引用
error LNK2019: 无法解析的外部符号 _mysql_close@4,该符号在函数 _main 中被引用

等无法解析外部符号的错误。

点击项目->属性->配置管理器

活动解决方案平台,下拉选新建,出现一个新的对号框,在键入选择新平台中选择X64

然后重新编译就OK了

参考:http://blog.csdn.net/w174504744/article/details/7884997
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: