2017-02-05 7 views
0

シンプルなコードの下に、同じクラス内の他の機能は1つの関数に設立:C++のMySQLは、使用して接続が

class A{ 

    MySQL *conn; 
    int query; 
public: 
    bool one(string fpServerName, string fpUserName, string fpPassword, string fpDatabase){ 
    conn = mysql_init(&mysql); 
    conn = mysql_real_connect(&mysql, fpServerName.c_str(), fpUserName.c_str(), fpPassword.c_str(), fpDatabase.c_str(), 0, NULL, 0); 
    if (!conn) 
     return false; 
    else 
     return true; 
    } 

    two(string fpSQL){ 
     query = mysql_query(conn, fpSQL.c_str()); 
    } 

    A(){} 
    } 

    int main(){ 
    A obj; 
    obj.one("127.0.0.1", "root", "", "users"); 
    obj.two(fpSQL); 
    } 

私は1つ(「127.0.0.1」、「ルート」を呼んでいます、「」、 "users")はDBに接続して機能します。今私は2つの(fpSQLの)connを使用したいと思いますが、unfortunatellyのプログラムのクラッシュがquery = mysql_query(conn、fpSQL.c_str())にあります。私が行方不明のものはありますか?提案ありがとう。

答えて

0

プログラムはあなたのCONN変数は、この方法でCONN変数をチェックするnullptr

てみているので、クラッシュしている:

void two(string fpSQL){ 
    if(nullptr!=conn){ 
     query = mysql_query(conn, fpSQL.c_str()); 
    } 
} 

もう一つは、関数はブール値を返す、ということです値をチェックしていない場合は、次のようにmain関数を変更します。

int main(){ 
    A obj; 
    if(obj.one("127.0.0.1", "root", "", "users")){ 
     obj.two(fpSQL); 
     // Close connection here 
    } 
} 

メインの最後に接続を閉じてください。

関連する問題