搜索
首页数据库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 --install mysql

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,默认一般已经这样了

vs2010连接mysql数据库(含win32和x64两种平台)

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

vs2010连接mysql数据库(含win32和x64两种平台)

由于我们要使用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这个目录就行

vs2010连接mysql数据库(含win32和x64两种平台)

vs2010连接mysql数据库(含win32和x64两种平台)

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

 

 

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

vs2010连接mysql数据库(含win32和x64两种平台)

 

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

vs2010连接mysql数据库(含win32和x64两种平台)

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

vs2010连接mysql数据库(含win32和x64两种平台)

如果不设置链接器->输入->附加依赖项中添加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,既可以完成编译链接。



以下是一个简单的例子源代码:工程类型是最简单的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关闭连接。*/




声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
您可以使用哪些工具来监视MySQL性能?您可以使用哪些工具来监视MySQL性能?Apr 23, 2025 am 12:21 AM

如何有效监控MySQL性能?使用mysqladmin、SHOWGLOBALSTATUS、PerconaMonitoringandManagement(PMM)和MySQLEnterpriseMonitor等工具。1.使用mysqladmin查看连接数。2.用SHOWGLOBALSTATUS查看查询数。3.PMM提供详细性能数据和图形化界面。4.MySQLEnterpriseMonitor提供丰富的监控功能和报警机制。

MySQL与SQL Server有何不同?MySQL与SQL Server有何不同?Apr 23, 2025 am 12:20 AM

MySQL和SQLServer的区别在于:1)MySQL是开源的,适用于Web和嵌入式系统,2)SQLServer是微软的商业产品,适用于企业级应用。两者在存储引擎、性能优化和应用场景上有显着差异,选择时需考虑项目规模和未来扩展性。

在哪些情况下,您可以选择SQL Server而不是MySQL?在哪些情况下,您可以选择SQL Server而不是MySQL?Apr 23, 2025 am 12:20 AM

在需要高可用性、高级安全性和良好集成性的企业级应用场景下,应选择SQLServer而不是MySQL。1)SQLServer提供企业级功能,如高可用性和高级安全性。2)它与微软生态系统如VisualStudio和PowerBI紧密集成。3)SQLServer在性能优化方面表现出色,支持内存优化表和列存储索引。

MySQL如何处理角色集和碰撞?MySQL如何处理角色集和碰撞?Apr 23, 2025 am 12:19 AM

mySqlManagesCharacterSetsetSandCollat​​ionsyutusututf-8asthEdeFault,允许ConfigurationAtdataBase,table和columnlevels,AndrequiringCarefullageLignmentToavoidMismatches.1)setDefeaultCharactersetTercharactersetEtCollacterSeteTandColletationForAdataBase.2)conformentcollecharactersettersetertersetcollat​​ertersetcollat​​ioncollat​​ion

MySQL中有什么触发器?MySQL中有什么触发器?Apr 23, 2025 am 12:11 AM

MySQL触发器是与表相关联的自动执行的存储过程,用于在特定数据操作时执行一系列操作。1)触发器定义与作用:用于数据校验、日志记录等。2)工作原理:分为BEFORE和AFTER,支持行级触发。3)使用示例:可用于记录薪资变更或更新库存。4)调试技巧:使用SHOWTRIGGERS和SHOWCREATETRIGGER命令。5)性能优化:避免复杂操作,使用索引,管理事务。

您如何在MySQL中创建和管理用户帐户?您如何在MySQL中创建和管理用户帐户?Apr 22, 2025 pm 06:05 PM

在MySQL中创建和管理用户账户的步骤如下:1.创建用户:使用CREATEUSER'newuser'@'localhost'IDENTIFIEDBY'password';2.分配权限:使用GRANTSELECT,INSERT,UPDATEONmydatabase.TO'newuser'@'localhost';3.修正权限错误:使用REVOKEALLPRIVILEGESONmydatabase.FROM'newuser'@'localhost';然后重新分配权限;4.优化权限:使用SHOWGRA

MySQL与Oracle有何不同?MySQL与Oracle有何不同?Apr 22, 2025 pm 05:57 PM

MySQL适合快速开发和中小型应用,Oracle适合大型企业和高可用性需求。1)MySQL开源、易用,适用于Web应用和中小型企业。2)Oracle功能强大,适合大型企业和政府机构。3)MySQL支持多种存储引擎,Oracle提供丰富的企业级功能。

与其他关系数据库相比,使用MySQL的缺点是什么?与其他关系数据库相比,使用MySQL的缺点是什么?Apr 22, 2025 pm 05:49 PM

MySQL相比其他关系型数据库的劣势包括:1.性能问题:在处理大规模数据时可能遇到瓶颈,PostgreSQL在复杂查询和大数据处理上表现更优。2.扩展性:水平扩展能力不如GoogleSpanner和AmazonAurora。3.功能限制:在高级功能上不如PostgreSQL和Oracle,某些功能需要更多自定义代码和维护。

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

VSCode Windows 64位 下载

VSCode Windows 64位 下载

微软推出的免费、功能强大的一款IDE编辑器

MinGW - 适用于 Windows 的极简 GNU

MinGW - 适用于 Windows 的极简 GNU

这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

Dreamweaver Mac版

Dreamweaver Mac版

视觉化网页开发工具

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一个PHP/MySQL的Web应用程序,非常容易受到攻击。它的主要目标是成为安全专业人员在合法环境中测试自己的技能和工具的辅助工具,帮助Web开发人员更好地理解保护Web应用程序的过程,并帮助教师/学生在课堂环境中教授/学习Web应用程序安全。DVWA的目标是通过简单直接的界面练习一些最常见的Web漏洞,难度各不相同。请注意,该软件中