2010-11-28 15 views
0

先生が与えたサンプルプログラムに続いて最初のデータベースアプリケーションを作成していますが、サンプルプログラムも自分のプログラムもデータベースに接続できません。 (JDBCサンプルプログラムでは、サーバーが正常に動作するはずです)。Visual C++ ODBCアプリケーションがMySQLデータベースに接続できません

DBModule::DBModule(string server, string database) 
{ 
this->server = server; //"localhost" is loaded into it 
this->database = database; //"test" is loaded into it, of course it exists on the server 

SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &env); 
SQLSetEnvAttr(env, SQL_ATTR_ODBC_VERSION, (void *) SQL_OV_ODBC3, 0); 
SQLAllocHandle(SQL_HANDLE_DBC, env, &dbc); 

command = "DRIVER={MySQL ODBC 3.51 Driver};SERVER="+this->server+";DATABASE="+this->database+";"; 
//command looks like this now: 
//"DRIVER={MySQL ODBC 3.51 Driver};SERVER=localhost;DATABASE=test;" 

ret = SQLDriverConnect(dbc, NULL, (SQLWCHAR *)command.c_str(), SQL_NTS, NULL, 0, NULL, SQL_DRIVER_COMPLETE); 

if (!SQL_SUCCEEDED(ret)) { 
    err += CONNECT_DATABASE*DATABASE_UNREACHABLE; 
    good = false; 
    return; 
} else { 
    good = true; 
} 

SQLAllocHandle(SQL_HANDLE_STMT, dbc, &stmt); 

command = sysToStd(DBINIT); 

SQLPrepare(stmt, (SQLWCHAR *)command.c_str(), SQL_NTS); 
ret = SQLExecute(stmt); 
} 

のSQLDriverConnectでRETを取得します。それは、接続が行われるべき場所だし、ここで

SQLHENV env; 
SQLHDBC dbc; 
SQLHSTMT stmt; 
SQLRETURN ret; 

は私のデータベースハンドラクラスのコンストラクタです:

私は、クラス宣言でこれらのVARSを持っています-1の値。

私はすべてのデフォルト設定でサーバーとして最新のXAMPPを使用しています(私は "root"なのでパスワードはありません)。私は接続文字列にUID = rootを追加しようとしましたが、同じことをしました。

ありがとうございました。

+2

mySQL ODBCコネクタのユーザーインターフェイスのODBCドライバ構成には、「テスト接続」ボタンがあります。あなたはそれを試しましたか? –

+0

私はそれを持っているとは思わない... これは私がこれを動作させるために何かをインストールする必要があることを意味しますか? 申し訳ありませんが、私はこれで本当にnoobです。私が知っているのは、上記のコードに書かれています:P ありがとう –

答えて

0

MySQL ODBCドライバがインストールされていない可能性があります。 JDBCは、インストールする必要がないため動作します.Javaアプリケーションに付属しているいくつかの.jarファイルです。 ODBCを使用してMySQL ODBCドライバをインストールし、ODBCマネージャーでシステムDSNとして接続を設定し、次にODBCマネージャーからデータベースに接続しているかどうかを確認します(ほとんどのODBCドライバーは「テスト接続」ボタンを持っています)。

このようなテストでは、「接続済み」または同様のことが示された場合、アプリケーションが接続しているかどうかをテストできます。これによると

DRIVER={MySQL ODBC 3.51 Driver};SERVER=...;DATABASE.... 

:あなたの接続刺さは次のようになりますhttp://www.connectionstrings.com/mysql#p30それはたぶん、データベースがdafultポートで待機していないあなたは3.51

のMySQLのConnector/ODBCを使用しようとしているに見えますか?

+0

これらを試してみましたが、どちらもうまくいきませんでした(MySQL Connector CとC++も試しました。同じです)、私はクエリをサーバーに転送するプリミティブなJDBCプログラムを作成しました。これは私のC++アプリケーションへの応答です。これはかなり遅いですが、少なくとも動作します。 しかし、とにかく助言をいただきありがとうございます。 –

+0

ODBCマネージャでMySQLドライバがインストールされていることを確認しましたか?それはドライバリストにありますか? –