VS2013鏈接Mysql數據庫的設置以及常見問題

        前兩天用VS2013鏈接Mysql遇到了不少問題,上網搜了不少發現好多講的並不清楚,因而乎我就想把我遇到的問題總結下來,幫助後來人少走點彎路。mysql

    步驟:ios

      1:首先須要注意的是 Mysql版本是32位仍是64位,若是是64位請將VS2013設置爲 x64,具體設置爲:右鍵項目->屬性->在右上角有 「配置管理器」 ->點擊 修改成 x64sql

這麼作的緣由是接下來會用到 mysql 中有 libmysql.dll,而若是是64位的mysql,則該dll文件是64位的,正常的VS是用win32生成的是32位的,會致使沒法調用!數據庫

 

      2:接下來進行配置,首先請網上下載 myqls,並進行相應的安裝。這裏就不說了,安裝過程比較簡單。但須要注意的是 安裝的時候記住 root設置的密碼。這個root是指登錄數據庫時候用到windows

     配置過程:項目-》右鍵屬性:函數

         1)"VS++目錄"->「包含目錄」   將其設置爲MYSQL中的include 所在目錄 ,例如個人是 :C:\Program Files (x86)\MySQL\MySQL Server 5.5\includefetch

              "VS++目錄「->"庫目錄"    將其設置這MYSQL中的lib所在目錄,例如個人是: C:\Program Files (x86)\MySQL\MySQL Server 5.5\libspa

   

        2)"C/C++"->」附加包含目錄「  將其設置爲 MYSQL 中的include 所在目錄,依舊是 : C:\Program Files (x86)\MySQL\MySQL Server 5.5\includedebug

  

       3)連接器->常規->「附加庫目錄」    將其設置爲 MYSQL中的inclde 所在目錄,依舊是:C:\Program Files (x86)\MySQL\MySQL Server 5.5\includeget

           連接器->常規->"輸入" ->附加依賴項->填入  -> libmysql.lib    (注意該文件在mysql 的include文件夾下,程序在連接時候調用該 庫文件)

  

至此,vs2013下的設置完畢!

 

 

    3:數據庫部分

   1)開啓 MYSQL數據庫,在CMD下,輸入: net start mysql    啓動數據庫

   2   再將當前路徑轉到:C:\Program Files (x86)\MySQL\MySQL Server 5.5\bin  下,輸入   mysql -uroot  -p     而後讓輸入密碼,這時輸入當時安裝mysql時的root密碼。這時就進入了mysql下。

  3:創建一個數據庫:   輸入 create  database  message;     則生成一個數據庫message,接下來咱們就要用VS2013中的程序鏈接這個message數據庫。

 

   4:在VS項目下,有以下代碼:

 

首先stdafx.h  targetver.h  stdafx.cpp不須要管,在創建控制檯項目的時候 會自動生成!

 

//CMysqlOperator.h


#pragma once
#include "stdafx.h"
#include <windows.h>
#include<winsock.h>
#include<mysql.h>

#include<string>

using namespace std;


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


class CMysqlOperator
{
public:
//變量
MYSQL mysql;

CMysqlOperator();
~CMysqlOperator();

int ConnMysql(char* host, char* port, char* Db, char* user, char* passwd, char* charset, char* Msg);
int DeleteData(char* SQL, char* Msg);

string CMysqlOperator::SelectData(char* SQL, int Cnum, char* Msg);

int CMysqlOperator::UpdateData(char* SQL, char* Msg);
int CMysqlOperator::InsertData(char* SQL, char* Msg);


void CloseMysqlConn();


};

 

 

 

 

 

 

 

 

 

 

 

///CMysqlOperator.cpp

 

 

#include "StdAfx.h"

#include "CMysqlOperator.h"


#include <string.h>

using namespace std;

CMysqlOperator::CMysqlOperator() {}

CMysqlOperator::~CMysqlOperator() {}

int CMysqlOperator::ConnMysql(char* host, char* port, char* Db, char* user, char* passwd, char* charset, char* Msg)
{
if (mysql_init(&mysql) == NULL)
{
Msg = "inital mysql handle error!";
return 1;
}

if (mysql_real_connect(&mysql, host, user, passwd, Db, 0, NULL, 0) == NULL)
{
Msg = "Failed to connect to database:Error!";
return 1;
}

if (mysql_set_character_set(&mysql, "GBK") != 0)
{
Msg = "mysql_set_charater_set_Error!";
return 1;
}
return 0;
}

string CMysqlOperator::SelectData(char* SQL, int Cnum, char* Msg)
{
MYSQL_ROW m_row;
MYSQL_RES *m_res;
char sql[2048];
sprintf_s(sql, SQL);
int rnum = 0;
char rg = 0x06; //行隔開
char cg = { 0x05 }; //字段隔開

if (mysql_query(&mysql, sql) != 0)
{
Msg = "select ps_info_Error!";
return "";
}

m_res = mysql_store_result(&mysql);

if (m_res == NULL)
{
Msg = "select username Error!";
return "";
}

string str("");
while (m_row = mysql_fetch_row(m_res))
{
for (int i = 0; i < Cnum; i++)
{
str += m_row[i];
str += cg;
}
str += rg;
rnum++;
}

mysql_free_result(m_res);

return str;
}


//插入數據
int CMysqlOperator::InsertData(char* SQL, char* Msg)
{
char sql[2048];
sprintf_s(sql, SQL);

if (mysql_query(&mysql, sql) != 0)
{
Msg = "Insert Data Error!";
return 1;
}
return 0;
}

//更新數據
int CMysqlOperator::UpdateData(char* SQL, char* Msg)
{
char sql[2048];
sprintf_s(sql, SQL);
if (mysql_query(&mysql, sql) != 0)
{
Msg = "Update Data Error!";
return 1;
}
return 0;
}

//刪除數據
int CMysqlOperator::DeleteData(char* SQL, char* Msg)
{
char sql[2048];
sprintf_s(sql, SQL);
if (mysql_query(&mysql, sql) != 0)
{
Msg = "Delete Data Error!";
return 1;
}
return 0;
}


//關閉數據庫鏈接
void CMysqlOperator::CloseMysqlConn()
{
mysql_close(&mysql);

}

 

// ConsoleApplication2.cpp : 定義控制檯應用程序的入口點。  主函數 :
//

#include "stdafx.h"

#include "CMysqlOperator.h"

#include<iostream>
using namespace std;

 

int main()
{
//char* host = "127.0.0.1";
char *host = "localhost";     //表示本地數據庫
char* user = "root";
char* port = "3306";
char* passwd = "123456";
char* dbname = "message";    //這是數據庫
char* charset = "GBK";
char* Msg = "";

CMysqlOperator *mysqlOperator = new CMysqlOperator();
if (mysqlOperator->ConnMysql(host, port, dbname, user, passwd, charset, Msg) == 0)
cout << "鏈接數據庫成功!";
else
cout << Msg;

cout << "why";
getchar();

////查詢
//char* SQL = "SELECT userId, userName, passwd from userInfo";
//string str = mysqlOperator->SelectData(SQL, 4, Msg);
//if (str.length() > 0)
//{
// cout << "查詢成功@!" << endl;
// cout << str.data() << endl;
//}
//else
//{
// cout << Msg;
//}

////插入
//SQL = "Insert into userInfo(userId, userName, passwd) values(2, '張三', '12');";
//if (mysqlOperator->InsertData(SQL, Msg) == 0)
//{
// cout << "插入成功!" << endl;
//}
////更新
//SQL = "Update userInfo set userName = '改了' where userId = 2";
//if (mysqlOperator->UpdateData(SQL, Msg) == 0)
//{
// cout << "更新成功!" << endl;
//}
////刪除
//SQL = "Delete from userInfo where id = 2";
//if (mysqlOperator->DeleteData(SQL, Msg) == 0)
//{
// cout << "刪除成功!" << endl;
//}

//mysqlOperator->CloseMysqlConn();
//getchar();

return 0;
}

 

點擊運行就ok 了!  注意:運行的時候會提示 沒法找到 「libmysql.dll"  ,解決的方法是  找到C:\Program Files (x86)\MySQL\MySQL Server 5.5\lib  下的 」libmysql.dll「  將其複製到 你的 VS工程下的 debug下,由於正常上面會生成一個 CMysqlOperator.exe   ,該可執行文件在運行的時候會須要  」libmysql.dll「文件!

相關文章
相關標籤/搜索