操作系统:win7/64
编译软件:VS2010
数据库:5.7.11
从C语言连接mysql数据库包含两个步骤:
1 初始化连接句柄结构
2 实际创建连接
测试代码1:
#include "stdafx.h" #include <WinSock2.h> /*socket通信,系统头文件*/ #include <windows.h> #include <stdio.h> #include "mysql.h" #pragma comment(lib, "libmysql.lib") int main() { MYSQL *conn; char *server = "localhost"; char *user = "root"; char *password = "root";//“******”为你设置的密码 char *database = "hyx"; conn = mysql_init(NULL); if(!mysql_real_connect(conn, server, user, password, database, 0, NULL, 0)) printf("连接失败:%s", mysql_error(conn)); else printf("连接成功!"); getchar(); return 0; }
测试结果1:
遇到的问题:
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 中被引用
解决方法:
原因如下,我使用的系统是win7x64,MySQL 64位的lib也是64位的接口。所以解决方法如下:
.项目->属性->配置管理器
活动解决方案平台,下拉选新建,出现一个新的对号框,在键入选择新平台中选择X64
重新编译 成功~~~
测试代码2:
#include "stdafx.h"
#include <WinSock2.h> /*socket通信,系统头文件*/
#include <windows.h>
#include <stdio.h>
#include "mysql.h"
#pragma comment(lib, "libmysql.lib")
int main()
{
MYSQL my_connection;
char *server = "localhost";
char *user = "root";
char *password = "root";//“******”为你设置的密码
char *database = "hyx";
mysql_init(&my_connection);
if(!mysql_real_connect(&my_connection, server, user, password, database, 0, NULL, 0))
printf("连接失败:%sn", mysql_error(&my_connection));
else
printf("连接成功!");
getchar();
return 0;
}
测试结果2:
问题:测试代码1与测试代码2只有标黑的两行不同,但是一个连接成功了,一个连接失败了,这是什么原因?
F12 | 转到定义处 |
ctrl+"-" | 从定义处返回 |
F7 | 编译 |
ctrl+F5 | 运行 |
F5 | 执行到下一个断点 |
F10 | 调试(逐过程) |
F11 | 调试(逐语句) |