VS在win32平台与mysql链接_vs2010连接mysql数据库(含win32和x64两种平台)

数据库安装: 此处有两种安装方式,第一种使用xxx.msi图形化安装方式,和普通的exe软件安装方式一样,按照默认选项一直下一步就可以。mysql下载地址为http://dev.mysql.com/downloads/windows/installer/ 第二种是在mysql官网下载zip压缩包,解压开了就是一

数据库安装:

此处有两种安装方式,第一种使用xxx.msi图形化安装方式,和普通的exe软件安装方式一样,按照默认选项一直下一步就可以。mysql下载地址为http://dev.mysql.com/downloads/windows/installer/

第二种是在mysql官网下载zip压缩包,解压开了就是一个文件夹。zip包下载地址为:http://dev.mysql.com/downloads/mysql/

根据自己的电脑操作系统位数选择相应的版本,否则到时vs链接过不了。

本文只说明第二种安装方式。

1.将mysql-5.6.14-winx64.zip解压缩到C:\mysql目录下,也可以是其它目录,自己随意。进入到C:\mysql\mysql-5.6.14-winx64目录,看到有很多个.ini文件,这个就是数据库的配置文件,不同类型的数据库对应一个.ini文件,你可以设定端口

字符集等等,修改完了之后将文件命名为my.ini,这样mysql server就能识别了。不过如果你没有特殊需要,这个文件是可以不用动的,删除了也可以,所有的配置项mysql自己都有默认值的。

2.运行栏输入cmd,进入命令界面,cd C:\mysql\mysql-5.6.14-winx64\bin,这里放着mysqld.exe命令

将mysql增加到系统服务中:运行命令mysqld

--install 或者 mysqld --installmysql

3.启动mysql服务端:net start mysql (必须启动着

vs才能连接上来,要是数据库连接失败请查看mysql服务是否启动)

4.使用系统管理员身份运行在命令行运行:mysql

-uroot 进入之后就可以执行相关的数据库命令了,若只是以mysql进入,则很多命令执行不了,必须以root用户进入,这里没有密码

5.不想使用数据库了就关掉mysql服务,免得占用内存:net

stop mysql

删除mysql服务:mysqld

--remove mysql

接下来对如何使用MySql的API连接MySql数据库,开发环境为VS2010.

一、VS2010工程设置工作(win32下)

1.首先,建立一个windows应用程序的工程,将项目-->xx属性(xx为自己取的名字)-->配置属性-->C/C++->预处理器->预处理器定义下的_WINDOWS改为_CONSOLE,默认一般已经这样了

test.jsp?url=http%3A%2F%2Fimages.cnblogs.com%2Fcnblogs_com%2Fjustinzhang%2F201109%2F201109231108449834.png&refer=http%3A%2F%2Fblog.csdn.net%2Fxiongwenwu%2Farticle%2Fdetails%2F12870983

2.链接器->系统->子系统 选择为控制台。默认已经这样的就不用动

test.jsp?url=http%3A%2F%2Fimages.cnblogs.com%2Fcnblogs_com%2Fjustinzhang%2F201109%2F201109231108455275.png&refer=http%3A%2F%2Fblog.csdn.net%2Fxiongwenwu%2Farticle%2Fdetails%2F12870983

由于我们要使用Mysql的API,并且我们机子上肯定安装了Mysql数据库,所以我们要将工程的头文件路径指向Mysql安装目录的同文件mysql.h所在的位置,将连接库路径指向libmysql.lib所在的路径,

在我的机子上,Mysql 的安装路径为:C:\mysql\mysql-5.6.14-winx64\include,C:\mysql\mysql-5.6.14-winx64\lib和下面图片不符,自己找自己的目录

高版本的mysql可能没有opt这个目录层次了,只要找到libmysql.lib这个目录就行

test.jsp?url=http%3A%2F%2Fimages.cnblogs.com%2Fcnblogs_com%2Fjustinzhang%2F201109%2F201109231108463257.png&refer=http%3A%2F%2Fblog.csdn.net%2Fxiongwenwu%2Farticle%2Fdetails%2F12870983

test.jsp?url=http%3A%2F%2Fimages.cnblogs.com%2Fcnblogs_com%2Fjustinzhang%2F201109%2F20110923110847683.png&refer=http%3A%2F%2Fblog.csdn.net%2Fxiongwenwu%2Farticle%2Fdetails%2F12870983

我们需要把VS2008的工程中的头文件路径和连接库路径指向上面的两个地方:

将x项目属性页的C/C++->常规->附加包含目录指向:C:\mysql\mysql-5.6.14-winx64\include

test.jsp?url=http%3A%2F%2Fimages.cnblogs.com%2Fcnblogs_com%2Fjustinzhang%2F201109%2F201109231108471697.png&refer=http%3A%2F%2Fblog.csdn.net%2Fxiongwenwu%2Farticle%2Fdetails%2F12870983

将项目属性页的链接器->常规->附加库目录指向:C:\mysql\mysql-5.6.14-winx64\lib

test.jsp?url=http%3A%2F%2Fimages.cnblogs.com%2Fcnblogs_com%2Fjustinzhang%2F201109%2F201109231108489438.png&refer=http%3A%2F%2Fblog.csdn.net%2Fxiongwenwu%2Farticle%2Fdetails%2F12870983

将链接器->输入->附加依赖项中添加libmysql.lib。

test.jsp?url=http%3A%2F%2Fimages.cnblogs.com%2Fcnblogs_com%2Fjustinzhang%2F201109%2F201109231108491532.png&refer=http%3A%2F%2Fblog.csdn.net%2Fxiongwenwu%2Farticle%2Fdetails%2F12870983

如果不设置链接器->输入->附加依赖项中添加libmysql.lib,那么会出现如下的错误:

1>------ 已启动全部重新生成: 项目: MySql-Connect, 配置: Debug Win32 ------

1>正在删除项目“MySql-Connect”(配置“Debug|Win32”)的中间文件和输出文件

1>正在编译...

1>MySql_Connect.cpp

1>x:\编程练习\c-c++\c\mysql_connect.cpp(35) : warning C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.

1> d:\program files\microsoft visual studio 9.0\vc\include\stdio.h(306) : 参见“scanf”的声明

1>x:\编程练习\c-c++\c\mysql_connect.cpp(72) : warning C4996: 'sprintf': This function or variable may be unsafe. Consider using sprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.

1> d:\program files\microsoft visual studio 9.0\vc\include\stdio.h(366) : 参见“sprintf”的声明

1>x:\编程练习\c-c++\c\mysql_connect.cpp(86) : warning C4996: 'sprintf': This function or variable may be unsafe. Consider using sprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.

1> d:\program files\microsoft visual studio 9.0\vc\include\stdio.h(366) : 参见“sprintf”的声明

1>正在编译资源清单...

1>Microsoft (R) Windows (R) Resource Compiler Version 6.1.6723.1

1>Copyright (C) Microsoft Corporation. All rights reserved.

1>正在链接...

1>LINK : 没有找到 d:\我的文档\Visual Studio 2008\Projects\MySql-Connect\Debug\MySql-Connect.exe 或上一个增量链接没有生成它;正在执行完全链接

1>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 中被引用

1>d:\我的文档\Visual Studio 2008\Projects\MySql-Connect\Debug\MySql-Connect.exe : fatal error LNK1120: 10 个无法解析的外部命令

1>生成日志保存在“file://d:\我的文档\Visual Studio 2008\Projects\MySql-Connect\MySql-Connect\Debug\BuildLog.htm”

1>MySql-Connect - 11 个错误,3 个警告

========== 全部重新生成: 成功 0 个,失败 1 个,跳过 0 个 ==========

到此处,win32平台已经配置好,可以打开vs写代码连接数据库了,但是x64平台上链接时总是会有以下错误:这是我遇到的问题

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 中被引用

后来一想我装的是win7

64位啊,MySQL也是赤裸裸的64位,我用WIN32 项目搞毛线。于是有一个猜想就是,MySQL 64位的lib也是64位的接口。

于是:项目-->xx属性(xx为自己取的名字)--》配置管理器-->活动解决方案平台

下拉后点击新建,会出现自动填写x64,下面一栏不用动,然后将平台改为x64,既可以完成编译链接。

mysql-tutorials-124220.html

以下是一个简单的例子源代码:工程类型是最简单的windows控制台程序:

//

data_use.cpp : 定义控制台应用程序的入口点。

//

#include "stdafx.h"

#include #include #include #include #pragma comment (lib, "libmysql.lib")

#pragma comment (lib, "mysqlclient.lib")

int main(int argc, _TCHAR* argv[])

{

MYSQL mysql; //数据库连接句柄

MYSQL_RES *res;

MYSQL_ROW row;

mysql_init (&mysql);

//先要在mysql中创建出数据库mydb和表mytable来,进入数据库:mysql -uroot

//若只是输入mysql进去,会执行不了创建表等命令,mysql的客户端工具很多,可以选择navicat

//若用c++连接数据库,可以考虑Mysql++ ,它提供了很多封装好的接口,避免了下面这样的手工方式写sql语句,这样很容易出错

int errorcode;

//连接数据库

if(mysql_real_connect(&mysql,"localhost","root",NULL,"mydb",3306,NULL,0))

{

printf("connect to database successfully!\n");

//构造SQL语句

char *deleted = "delete from mytable where username='xww'";

if(errorcode = mysql_real_query(&mysql,deleted,(unsigned int)strlen(deleted)))

{

//错误代码始终为1,表示false。一般情况下肯定是sql语句写错了,复制该sql语句到mysql命令行里面去执行一遍

printf("deleted fails. error code is %d \n",errorcode);

}

char *insert = "insert into mytable(username,visitelist,remark)values('xww','hz','s')";

if(mysql_real_query(&mysql,insert,(unsigned int)strlen(insert)))

{

printf("insert fails\n");

}

char *query = "select * from mytable";

if(errorcode = mysql_real_query(&mysql,query,(unsigned int)strlen(query)))

{

printf("query fails,errorcode is %d\n",errorcode);

}

else

{

printf("[%s] result is:\n", query);

res = mysql_store_result(&mysql);

while(row = mysql_fetch_row(res))

{

for(int t=0;t{

printf("%s ",row[t]);

}

printf("\n");

}

}

}

else

{

printf("connect to sql fail!\n");

}

return 0;

}

/*用到以下mysql的API:

mysql_init()

mysql_real_connect()

mysql_real_query()

mysql_store_result()

mysql_fetch_row()

mysql_free_result()

mysql_close()

操作中需要用到mysql中定义的三个结构体

MYSQL

MYSQL_RES

MYSQL_ROW

一般步骤是:

1.调用mysql_init()初始化MYSQL结构,许多的函数执行需要这个结构体。

2.调用mysql_real_connect()连接数据库,参数中涉及到数据库名,数据库登录名,数据库密码等等。

3.调用mysql_real_query()执行一条Select SQL语句,通过mysql_store_result()的返回值获得Select的结果,返回的结果就是一个MYSQL_RES结构的指针。

4.调用mysql_fetch_row()获得一条记录,函数的返回值是MYSQL_ROW对象,这是一个char二维数组。获取一条记录以后,mysql_fetch_row会将游标自动向下移动一条记录。

5.调用mysql_free_result()释放结果资源,调用mysql_close关闭连接。*/

f68f2add0b68e4f9810432fce46917b7.png

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值