0

少し前に C++ の学習を開始しました。現在、単純な mysql db 接続を作成しようとしています。私は Web 開発者のバックグラウンドを持っていますが、C++ の知識がなく、物事がどのように機能するかが原因で、すべてをセットアップするのは非常に困難でした。とにかく、mysql ++をインストールすることができ、チュートリアルから次のようなコードを取得しました。

#include </usr/local/include/mysql++/mysql++.h>
#include </usr/local/include/mysql++/cmdline.h>
#include <iostream>
#include <iomanip>

using namespace std;

int main()
{
    const char* db      = "backseat";
    const char* server  = "localhost";
    const char* user    = "root";
    const char* pass    = "root";

    mysqlpp::Connection conn(true);

    if ( conn.connection(db, server, user, pass) ) 
    {
        mysqlpp::Query query = conn.query('SHOW TABLES');
        if ( mysqlpp::StoreQueryResult res = query.store() )
        {
            cout << "We have: " << endl;
            for (size_t i=0; i < res.num_rows(); i++)
            {
                cout << '\t' << res[i][0] << endl;
            }
        }
        else
        {
            cerr << "Failed to get item list: " << query.error() << endl;
            return 1;
        }

        return 0;
    }
    else
    {
        cerr << "DB connection failed: " << conn.error() << endl;
        return 1;
    }
}

これは機能するはずですが、g ++は次の出力を提供します:

syd@whitebook:~/Desktop$ g++ sql.cpp -o sql -DMYSQLPP_MYSQL_HEADERS_BURIED
sql.cpp:19:37: warning: character constant too long for its type [enabled by default]
sql.cpp: In function ‘int main()’:
sql.cpp:17:12: error: ‘class mysqlpp::Connection’ has no member named ‘connection’
sql.cpp:19:50: error: invalid conversion from ‘int’ to ‘const char*’ [-fpermissive]
/usr/local/include/mysql++/connection.h:251:8: error:   initializing argument 1 of ‘mysqlpp::Query mysqlpp::Connection::query(const char*)’ [-fpermissive]
syd@whitebook:~/Desktop$ 

ここで何が間違っていますか?また、mysql++ などをお勧めしますか?

PS: チュートリアル - ここからのガイド: http://my-problem-solved.blogspot.gr/2010/12/installing-mysql-server-and-mysql-apl.html

4

1 に答える 1

1

タイプミスがあります (t 行方不明)

mysqlpp::Connecion conn(true);

する必要があります

mysqlpp::Connection conn(true);
               ^
               ^

これを修正すると他のエラーが発生する可能性がありますが、これがコンパイル エラーの原因です。コンパイル エラー メッセージを注意深く読むと、タイプミスしたクラス名が実際エコー バックされていることがわかりますConnecion

質問を書き直したことに照らして、必要な関数が呼び出されると思います

 conn.connect(db, server, user, pass)

これは、mysql++ を使用するときに確実に機能します。使用することもできます

conn.connected();

接続が正常かどうかを確認します。

また

mysqlpp::Query query = conn.query("SHOW TABLES");

それ以外の

mysqlpp::Query query = conn.query('SHOW TABLES');

<<または、演算子を使用できます

Query query = conn.query();
query << "SHOW TABLES";
于 2013-12-25T12:58:13.713 に答える