win7 64位系统使用VS2013编写MySQL代码
2017-03-23 13:00
417 查看
环境配置:
1. 下载安装MYSQL sever from https://dev.mysql.com/downloads/mysql/
2. 安装,步骤百度,一路Excute, next,设置root账户密码
3. 新建VS项目工程,vs连接数据库其实就是将MySQL数据库.h头文件接口、lib链接文件和dll执行文件加入到项目中。
在项目配置中C/C++的Additional Include Directories中添加MYSQL安装后的include目录。如:C:\Program Files\MySQL\MySQL Connector.C 6.1\include;
在Linder->General->Additional Library Directories 中添加lib库所在目录,如C:\Program Files\MySQL\MySQL Connector.C 6.1\lib;%(AdditionalLibraryDirectories)
在Linker->Input->Additional Dependencies中添加libsql.lib
7.新建Source文件,添加如下代码
#include <iostream>
#include <mysql.h>
using namespace std;
void main()
{
const char* user = "root";
const char* password = "haojinming";
const char* host = "localhost";
const char* db = "test_schema";
unsigned int port = 3306;
MYSQL myCout;
MYSQL_RES *result = nullptr;
MYSQL_ROW sqlRow;
MYSQL_FIELD *fd = nullptr;
char column[32][32];
int res = 0;
mysql_init(&myCout);
if (mysql_real_connect(&myCout, host, user, password, db, port, nullptr, 0))
{
cout << "SQL is successfully connected." << endl;
//mysql_query(&myCout, "SET NAMES GBK");
res = mysql_query(&myCout, "select * from test_table where ID=2");
if (!res)
{
result = mysql_store_result(&myCout);
if (result)
{
int i = 0, j = 0;
cout << "Number of reslut:" << (unsigned long)mysql_num_rows(result) << endl;
for (i = 0; fd = mysql_fetch_field(result); i++)
{
strcpy(column[i], fd->name);
}
j = mysql_num_fields(result);
for (i = 0; i < j; i++)
{
cout << column[i] << " ";
}
cout << endl;
while (sqlRow = mysql_fetch_row(result))
{
for (i = 0; i < j; i++)
{
strcpy(column[i + j], sqlRow[i]);
cout << sqlRow[i] << " ";
}
}
cout << endl;
}
}
else
{
cout << "Query sql failed." << endl;
}
}
else
{
cout << "SQL failed to connect." << endl;
}
if (result != nullptr)
{
mysql_free_result(result);
}
mysql_close(&myCout);
}
链接会出错,
>MySql_Connect.obj
: error LNK2019: 无法解析的外部符号 _mysql_close@4,该符号在函数 _main 中被引用
1>MySql_Connect.obj : error LNK2019: 无法解析的外部符号 _mysql_free_result@4,该符号在函数 _main 中被引用
1>MySql_Connect.obj : error LNK2019: 无法解析的外部符号 _mysql_num_fields@4,该符号在函数 _main 中被引用
1>MySql_Connect.obj : error LNK2019: 无法解析的外部符号 _mysql_fetch_row@4,该符号在函数 _main 中被引用
1>MySql_Connect.obj : error LNK2019: 无法解析的外部符号 _mysql_store_result@4,该符号在函数 _main 中被引用
1>MySql_Connect.obj : error LNK2019: 无法解析的外部符号 _mysql_error@4,该符号在函数 _main 中被引用
1>MySql_Connect.obj : error LNK2019: 无法解析的外部符号 _mysql_real_query@12,该符号在函数 _main 中被引用
1>MySql_Connect.obj : error LNK2019: 无法解析的外部符号 _mysql_select_db@8,该符号在函数 _main 中被引用
1>MySql_Connect.obj : error LNK2019: 无法解析的外部符号 _mysql_real_connect@32,该符号在函数 _main 中被引用
1>MySql_Connect.obj : error LNK2019: 无法解析的外部符号 _mysql_init@4,该符号在函数 _main 中被引用
解决方案:
.项目->属性->配置管理器
活动解决方案平台,下拉选新建,出现一个新的对号框,在键入选择新平台中选择X64
最后重新编译,这次完全证明的我想法是对的。编译成功。
最后分析一下解决这个问题关键,其实这个问题很简单。搞明白dll和lib的作用,或许都能分析出这个问题了原因了。
1. 下载安装MYSQL sever from https://dev.mysql.com/downloads/mysql/
2. 安装,步骤百度,一路Excute, next,设置root账户密码
3. 新建VS项目工程,vs连接数据库其实就是将MySQL数据库.h头文件接口、lib链接文件和dll执行文件加入到项目中。
在项目配置中C/C++的Additional Include Directories中添加MYSQL安装后的include目录。如:C:\Program Files\MySQL\MySQL Connector.C 6.1\include;
在Linder->General->Additional Library Directories 中添加lib库所在目录,如C:\Program Files\MySQL\MySQL Connector.C 6.1\lib;%(AdditionalLibraryDirectories)
在Linker->Input->Additional Dependencies中添加libsql.lib
7.新建Source文件,添加如下代码
#include <iostream>
#include <mysql.h>
using namespace std;
void main()
{
const char* user = "root";
const char* password = "haojinming";
const char* host = "localhost";
const char* db = "test_schema";
unsigned int port = 3306;
MYSQL myCout;
MYSQL_RES *result = nullptr;
MYSQL_ROW sqlRow;
MYSQL_FIELD *fd = nullptr;
char column[32][32];
int res = 0;
mysql_init(&myCout);
if (mysql_real_connect(&myCout, host, user, password, db, port, nullptr, 0))
{
cout << "SQL is successfully connected." << endl;
//mysql_query(&myCout, "SET NAMES GBK");
res = mysql_query(&myCout, "select * from test_table where ID=2");
if (!res)
{
result = mysql_store_result(&myCout);
if (result)
{
int i = 0, j = 0;
cout << "Number of reslut:" << (unsigned long)mysql_num_rows(result) << endl;
for (i = 0; fd = mysql_fetch_field(result); i++)
{
strcpy(column[i], fd->name);
}
j = mysql_num_fields(result);
for (i = 0; i < j; i++)
{
cout << column[i] << " ";
}
cout << endl;
while (sqlRow = mysql_fetch_row(result))
{
for (i = 0; i < j; i++)
{
strcpy(column[i + j], sqlRow[i]);
cout << sqlRow[i] << " ";
}
}
cout << endl;
}
}
else
{
cout << "Query sql failed." << endl;
}
}
else
{
cout << "SQL failed to connect." << endl;
}
if (result != nullptr)
{
mysql_free_result(result);
}
mysql_close(&myCout);
}
链接会出错,
>MySql_Connect.obj
: error LNK2019: 无法解析的外部符号 _mysql_close@4,该符号在函数 _main 中被引用
1>MySql_Connect.obj : error LNK2019: 无法解析的外部符号 _mysql_free_result@4,该符号在函数 _main 中被引用
1>MySql_Connect.obj : error LNK2019: 无法解析的外部符号 _mysql_num_fields@4,该符号在函数 _main 中被引用
1>MySql_Connect.obj : error LNK2019: 无法解析的外部符号 _mysql_fetch_row@4,该符号在函数 _main 中被引用
1>MySql_Connect.obj : error LNK2019: 无法解析的外部符号 _mysql_store_result@4,该符号在函数 _main 中被引用
1>MySql_Connect.obj : error LNK2019: 无法解析的外部符号 _mysql_error@4,该符号在函数 _main 中被引用
1>MySql_Connect.obj : error LNK2019: 无法解析的外部符号 _mysql_real_query@12,该符号在函数 _main 中被引用
1>MySql_Connect.obj : error LNK2019: 无法解析的外部符号 _mysql_select_db@8,该符号在函数 _main 中被引用
1>MySql_Connect.obj : error LNK2019: 无法解析的外部符号 _mysql_real_connect@32,该符号在函数 _main 中被引用
1>MySql_Connect.obj : error LNK2019: 无法解析的外部符号 _mysql_init@4,该符号在函数 _main 中被引用
解决方案:
.项目->属性->配置管理器
活动解决方案平台,下拉选新建,出现一个新的对号框,在键入选择新平台中选择X64
最后重新编译,这次完全证明的我想法是对的。编译成功。
最后分析一下解决这个问题关键,其实这个问题很简单。搞明白dll和lib的作用,或许都能分析出这个问题了原因了。
相关文章推荐
- 64位win7下使用C_API编写mysql程序的错误及解决办法记录
- 在32位系统计算机上编写的程序 (工具vs2013/2010),在64位操作系统上运行时出现缺少.dll和0x000007b错误的问题
- win7 64位系统下 vs2013无法创建c++项目
- 一、在WIN7 64位系统平台,VS2013环境下安装WTL90_4090_RC1(2014-04-01)
- Win7 64位系统,使用(IME)模式VS2010 编写 和 安装 输入法 教程(1)
- Win7下使用VS2013编写的ActvieX在XP下注册提示:LoadLibrary("XXX.dll")失败-找不到指定的程序
- Win7下使用VS2013编写的ActvieX在XP下注册提示:LoadLibrary("XXX.dll")失败-找不到指定的程序
- pmd CamBoard PICO flexx 相机使用心得-64位win7,VS2013开发
- 使用eclipse调试cocos2d-x C++ 代码(编写+真机调试,放弃VS)
- 使用eclipse调试cocos2d-x C++ 代码(编写+真机调试,放弃VS)
- PowerDesigner15在win7-64位系统下对MySQL 进行反向工程以及建立物理模型产生SQL语句步骤图文傻瓜式详解
- 使用eclipse调试cocos2d-x C++ 代码(编写+真机调试,放弃VS)
- win7 64位系统使用VS2010生成时出现中文目录乱码问题的解决方法【转】
- WIN7 64位系统使用SCRT 7.0 64位、GNS3以及SCRT与GNS3的关联(二)
- win7 64位下 使用DOSBOX 进行汇编程序的编写调试
- PowerDesigner15在win7-64位系统下对MySQL 进行反向工程以及建立物理模型产生SQL语句步骤图文傻瓜式详解
- 使用eclipse调试cocos2d-x C++ 代码(编写+真机调试,放弃VS)
- win7 64位系统下安装Oracle 11g 64位后 使用PLSQL Developer
- 64位win7使用ghost做系统重启后不出现ghost菜单解决
- 解决:win7 ,64位下,vs 2008 ,oracle 数据库使用内置的web server 报ORA-12154: TNS: 无法解析指定的连接标识符