2015-12-31 59 views
0

的main.cppVS2013 C++中的libmysql.dll連接mysql ---錯誤

#include "sqlConnection.h" 
#include <iostream> 
int main() { 
    sqlConnection *sqlC = new sqlConnection(); 
    sqlC->ifSucceed(); 
} 

sqlConnection.h

#include <Windows.h> 
#include <stdio.h> 
#include <winsock.h> 
#include "mysql.h" 
#include <iostream> 
#pragma once 

using namespace std; 

class sqlConnection 
{ 
public: 
    sqlConnection(); 
    ~sqlConnection(); 
    void ifSucceed(); 
    MYSQL mysql; 
    MYSQL_RES *result; 
    MYSQL_ROW row; 
}; 

sqlConnection.cpp

#include "sqlConnection.h" 

sqlConnection::sqlConnection() 
{ 
    mysql_init(&mysql); 
    mysql_real_connect(&mysql, "xxxxx", "xxxx", "xxxx", "librarySys", 7726, NULL, 0); 
} 

void sqlConnection::ifSucceed() { 
    char *sql = "select * from tb_bookcase"; 
    mysql_query(&mysql, sql); 
    result = mysql_store_result(&mysql); 
    if ((row = mysql_fetch_row(result)) != NULL) { 
     cout << "succeed!" << endl; 
    } else { 
     cout << "faiiiiiiiiled" << endl; 
    } 
} 

sqlConnection::~sqlConnection() { 
} 

如果有源文件中出現libmysql.dll錯誤信息:有 未處理excep和:0x00007FFED00441E6(libmysql.dll)(在 librarySys.exe中)0xC0000005:讀取 時發生訪問衝突0x0000000000000010。

然後我不得不停下來。 VS給我選擇,改變PDB,二進制文件路徑並重試。但我不知道該怎麼做。

如果我刪除的libmysql.dll,該錯誤信息是:

程序無法在 computer.Try失去的libmysql.dll重新安裝這個程序來解決這個問題開始。

這很混亂!我嘗試了很多方法來連接。總是有錯誤消息。

回答

1

全部mysql_*函數返回一個表示成功或失敗的值。你的代碼無視它們。在進行下一個呼叫之前,您應該確認呼叫是否成功。我猜測你實際上沒有連接到數據庫,你的MYSQL仍然無效。

使用您的調試器。在黑暗中編碼沒有意義。使用您的調試器,您將很快看到您的MYSQL對象是否已正確初始化。

另一件事:

sqlConnection *sqlC = new sqlConnection(); 

沒有理由分配這是堆。