Приложение ODBC для Visual C ++ не может подключиться к базе данных MySQL - PullRequest
0 голосов
/ 29 ноября 2010

Я пишу свое первое приложение базы данных по примеру программы, которую дал учитель, но ни образец, ни моя собственная программа не могут подключиться к базе данных. (Пример программы JDBC может, поэтому сервер должен быть в порядке).

У меня есть эти переменные в объявлении класса:

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

Вот конструктор моего класса обработчика базы данных, вот где должно быть установлено соединение:

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);
}

ret в SQLDriverConnect получает значение -1.

Я использую последнюю версию XAMPP в качестве сервера со всеми настройками по умолчанию (так что я "root" и пароля нет). Я попытался добавить UID = root в строку подключения, но он сделал то же самое.

Спасибо за любую помощь.

1 Ответ

0 голосов
/ 01 декабря 2010

Возможно, у вас не установлены драйверы MySQL ODBC.JDBC работает, потому что вам не нужно «устанавливать» их: это некоторые файлы .jar, которые могут поставляться с Java-приложением.Если вы будете использовать ODBC, установите драйверы MySQL ODBC, настройте соединение в ODBC Manager как системный DSN, а затем в ODBC manager проверьте, подключается ли он к базе данных (большинство известных мне драйверов ODBC имеют кнопку «тестовое соединение»).

Когда такой тест показывает, что вы «подключены» или аналогичные, вы можете проверить, если ваше приложение подключается.Ваше соединение выглядит следующим образом:

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

, поэтому в соответствии с: http://www.connectionstrings.com/mysql#p30 похоже, что вы пытаетесь использовать MySQL Connector / ODBC 3.51

Возможно, база данных не прослушивает dafultпорт

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...