検索
ホームページデータベース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はSQLiteとどのように違いますか?MySQLはSQLiteとどのように違いますか?Apr 24, 2025 am 12:12 AM

MySQLとSQLiteの主な違いは、設計コンセプトと使用法のシナリオです。1。MySQLは、大規模なアプリケーションとエンタープライズレベルのソリューションに適しており、高性能と高い並行性をサポートしています。 2。SQLiteは、モバイルアプリケーションとデスクトップソフトウェアに適しており、軽量で埋め込みやすいです。

MySQLのインデックスとは何ですか?また、パフォーマンスをどのように改善しますか?MySQLのインデックスとは何ですか?また、パフォーマンスをどのように改善しますか?Apr 24, 2025 am 12:09 AM

MySQLのインデックスは、データの取得をスピードアップするために使用されるデータベーステーブル内の1つ以上の列の順序付けられた構造です。 1)インデックスは、スキャンされたデータの量を減らすことにより、クエリ速度を改善します。 2)B-Tree Indexは、バランスの取れたツリー構造を使用します。これは、範囲クエリとソートに適しています。 3)CreateIndexステートメントを使用して、createIndexidx_customer_idonorders(customer_id)などのインデックスを作成します。 4)Composite Indexesは、createIndexIDX_CUSTOMER_ORDERONORDERS(Customer_Id、Order_date)などのマルチコラムクエリを最適化できます。 5)説明を使用してクエリ計画を分析し、回避します

データの一貫性を確保するために、MySQLでトランザクションを使用する方法を説明します。データの一貫性を確保するために、MySQLでトランザクションを使用する方法を説明します。Apr 24, 2025 am 12:09 AM

MySQLでトランザクションを使用すると、データの一貫性が保証されます。 1)StartTransactionを介してトランザクションを開始し、SQL操作を実行して、コミットまたはロールバックで送信します。 2)SavePointを使用してSave Pointを設定して、部分的なロールバックを許可します。 3)パフォーマンスの最適化の提案には、トランザクション時間の短縮、大規模なクエリの回避、分離レベルの使用が合理的に含まれます。

どのシナリオでMySQLよりもPostgreSQLを選択できますか?どのシナリオでMySQLよりもPostgreSQLを選択できますか?Apr 24, 2025 am 12:07 AM

MySQLの代わりにPostgreSQLが選択されるシナリオには、1)複雑なクエリと高度なSQL関数、2)厳格なデータの整合性と酸コンプライアンス、3)高度な空間関数が必要、4)大規模なデータセットを処理するときに高いパフォーマンスが必要です。 PostgreSQLは、これらの側面でうまく機能し、複雑なデータ処理と高いデータの整合性を必要とするプロジェクトに適しています。

MySQLデータベースをどのように保護できますか?MySQLデータベースをどのように保護できますか?Apr 24, 2025 am 12:04 AM

MySQLデータベースのセキュリティは、以下の測定を通じて達成できます。1。ユーザー許可管理:CreateUSERおよびGrantコマンドを通じてアクセス権を厳密に制御します。 2。暗号化された送信:SSL/TLSを構成して、データ送信セキュリティを確保します。 3.データベースのバックアップとリカバリ:MySQLDUMPまたはMySQLPumpを使用して、定期的にデータをバックアップします。 4.高度なセキュリティポリシー:ファイアウォールを使用してアクセスを制限し、監査ロギング操作を有効にします。 5。パフォーマンスの最適化とベストプラクティス:インデックス作成とクエリの最適化と定期的なメンテナンスを通じて、安全性とパフォーマンスの両方を考慮に入れます。

MySQLのパフォーマンスを監視するために使用できるツールは何ですか?MySQLのパフォーマンスを監視するために使用できるツールは何ですか?Apr 23, 2025 am 12:21 AM

MySQLのパフォーマンスを効果的に監視する方法は? MySqladmin、ShowGlobalStatus、PerconAmonitoring and Management(PMM)、MySQL EnterpriseMonitorなどのツールを使用します。 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はMicrosoftの商用製品であり、エンタープライズレベルのアプリケーションに適しています。ストレージエンジン、パフォーマンスの最適化、アプリケーションシナリオの2つには大きな違いがあります。選択するときは、プロジェクトのサイズと将来のスケーラビリティを考慮する必要があります。

どのシナリオでMySQLよりもSQL Serverを選択できますか?どのシナリオでMySQLよりもSQL Serverを選択できますか?Apr 23, 2025 am 12:20 AM

高可用性、高度なセキュリティ、優れた統合を必要とするエンタープライズレベルのアプリケーションシナリオでは、MySQLの代わりにSQLServerを選択する必要があります。 1)SQLServerは、高可用性や高度なセキュリティなどのエンタープライズレベルの機能を提供します。 2)VisualStudioやPowerbiなどのMicrosoftエコシステムと密接に統合されています。 3)SQLSERVERは、パフォーマンスの最適化に優れた機能を果たし、メモリが最適化されたテーブルと列ストレージインデックスをサポートします。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

SublimeText3 英語版

SublimeText3 英語版

推奨: Win バージョン、コードプロンプトをサポート!

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境