1

私は 2 日後に予定されているプロジェクトに取り組んでおり、過去 2 日間、これを機能させる方法を探していました。私は C++ にかなり慣れていません。私たちの Class プロジェクトでは、C++ を使用して 5 つのゲームを作成し、それらを MySQL データベースにエクスポートしてハイスコア テーブルを作成する必要があります。

MySQL データベースはまったく問題ありません。私の唯一の問題は、C++ を MySQL データベースに接続することです。

誰かが私を助けることができる場合に備えて、ここにいくつかの詳細情報があります。

これには Visual Studio 2010 および 2012 を使用しています。(私はVS 2012を持っていますが、私の学校は2010を持っているので、これに互換性の違いがあるかどうかはわかりませんが、VS2010も持っています)。

「#include」ステートメントが機能しない理由など、これらの種類のことについて 5 時間以上 Web を検索しており、プロジェクトのプロパティに移動してさまざまなインクルード ライブラリを追加することについて学びました。通常、しばらくサーフィンした後、どこが間違っていたのかを理解できますが、ここで私が見つけることができる唯一の助けは、私が行ったブーストを含めることです。ここまで完全に途方にくれました。このクラスのプロジェクトを一緒にやっている私の友達は、これが私たちに残された最後のことなので、いらいらしています。

そこで、私が入れるべきだと思うものを以下に示します。

私が行っている両方のテストプログラムの私のインクルード (両方ともまったく同じです)

"Additional Include Directories"
C:\Users\Damian\Desktop\boost_1_53_0\boost_1_53_0\boost
C:\Program Files\MySQL\MySQL Connector C++ 1.1.3\include
C:\Program Files\MySQL\MySQL Server 5.6\include

マイリンカー - >「追加のライブラリディレクトリ」

C:\Users\Damian\Desktop\boost_1_53_0\boost_1_53_0\boost
C:\Program Files\MySQL\MySQL Connector C++ 1.1.3\lib\opt
C:\Program Files\MySQL\MySQL Server 5.6\lib

実行しようとしている両方のプログラムのコード。

これは私がVisual Studio 2012でテストしていたものです

#include <iostream>
#include <cstdio>
#include <cstdlib>
using namespace std;

#include <stdlib.h>
#include <Windows.h>
#include <mysql.h>
#include "mysql_connection.h"

#include <cppconn/driver.h>
#define host "localhost"
#define username "username"
#define password "password"
#define database "db_test"

int main()
{
    MYSQL* conn;
    conn = mysql_init( NULL );
    if( conn )
    {
        mysql_real_connect( conn, host, username, password, database, 0, NULL, 0 );
    }
    MYSQL_RES* res_set;
    MYSQL_ROW row;
    unsigned int i;
    mysql_query( conn, "SELECT * FROM tbl_clients WHERE id = 1" ); 
    res_set = mysql_store_result( conn );
    unsigned int numrows = mysql_num_rows( res_set ); 
    if( numrows )
    {
        row = mysql_fetch_row( res_set );
        if( row != NULL )
        {
            cout << "Client ID  : " << row[0] << endl;
            cout << "Client Name: " << row[1] << endl;
        }
    }
    if( res_set )
    {
        mysql_free_result( res_set );
    }
    if( conn )
    {
        mysql_close( conn );
    }

    return 0;
}

これは、Visual Studio 2010 でコンパイルしようとしているコードです

#include <stdio.h>
#define W32_LEAN_AND_MEAN
#include <winsock2.h>
#include "mysql.h"
#include "mysql_connection.h"

#include <cppconn/driver.h>
#include <iostream>

// change these to suit your setup
#define TABLE_OF_INTEREST "highscores"
#define SERVER_NAME "127.0.0.1"
#define DB_USER "root"
#define DB_USERPASS "root"
#define DB_NAME "test"

// prototypes
void showTables(MYSQL*);
void showContents(MYSQL*,const char*);

using namespace std;

int main(int argc, char* argv[])
{
MYSQL *hnd=NULL; // mysql connection handle
const char *sinf=NULL; // mysql server information

hnd = mysql_init(NULL);
if (NULL == mysql_real_connect(hnd,SERVER_NAME,DB_USER,DB_USERPASS,DB_NAME,0,NULL,0))
{
fprintf(stderr,"Problem encountered connecting to the %s database on %s.\n",DB_NAME,SERVER_NAME);
}
else
{
fprintf(stdout,"Connected to the %s database on %s as user '%s'.\n",DB_NAME,SERVER_NAME,DB_USER);
sinf = mysql_get_server_info(hnd);

if (sinf != NULL)
{
fprintf(stdout,"Got server information: '%s'\n",sinf);
showTables(hnd);
showContents(hnd,TABLE_OF_INTEREST);
}
else
{
fprintf(stderr,"Failed to retrieve the server information string.\n");
}

mysql_close(hnd);
}

return 0;
}

void showTables(MYSQL *handle)
{
MYSQL_RES *result=NULL; // result of asking the database for a listing of its tables
MYSQL_ROW row; // one row from the result set

result = mysql_list_tables(handle,NULL);
row = mysql_fetch_row(result);
fprintf(stdout,"Tables found:\n\n");
while (row)
{
fprintf(stdout,"\t%s\n",row[0]);
row = mysql_fetch_row(result);
}
mysql_free_result(result);

fprintf(stdout,"\nEnd of tables\n");

return;
}

void showContents
(
MYSQL *handle,
const char *tbl
)
{
MYSQL_RES *res=NULL; // result of querying for all rows in table
MYSQL_ROW row; // one row returned
char sql[1024], // sql statement used to get all rows
commastr[2]; // to put commas in the output
int i,numf=0; // number of fields returned from the query

sprintf(sql,"select * from %s",tbl);
fprintf(stdout,"Using sql statement: '%s' to extract all rows from the specified table.\n",sql);

if (!mysql_query(handle,sql))
{
res = mysql_use_result(handle);
if (res)
{
numf = mysql_num_fields(res);
row = mysql_fetch_row(res);
fprintf(stdout,"Rows returned:\n\n");
while (row)
{
commastr[0]=commastr[1]=(char)NULL;
for (i=0;i<numf;i++)
{
if (row == NULL)
{
fprintf(stdout,"%sNULL",commastr);
}
else
{
fprintf(stdout,"%s%s",commastr,row);
}
commastr[0]=',';
}
fprintf(stdout,"\n");

row = mysql_fetch_row(res);
}
fprintf(stdout,"\nEnd of rows\n");

mysql_free_result(res);
}
else
{
fprintf(stderr,"Failed to use the result acquired!\n");
}
}
else
{
fprintf(stderr,"Failed to execute query. Ensure table is valid!\n");
}

return;
} 

これらの両方でこのエラーが発生します

1>c:\program files\mysql\mysql connector c++ 1.1.3\include\cppconn\connection.h(31): fatal error C1083: Cannot open include file: 'boost/variant.hpp': No such file or directory
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

助けてください!注:私はデータベースに成功して接続しようとしているだけなので、さまざまなクエリなどを実行できます。これらのプログラムは、私が他の場所からコピーした単なるテストです。

ありがとう!!

4

1 に答える 1

4

おもう

"Additional Include Directories"
 C:\Users\Damian\Desktop\boost_1_53_0\boost_1_53_0\boost

する必要があります

"Additional Include Directories"
C:\Users\Damian\Desktop\boost_1_53_0\boost_1_53_0
于 2013-05-09T02:49:13.770 に答える