Приложение ODBC для Visual C ++ не может подключиться к базе данных MySQL

0

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

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

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 в строку подключения, но он сделал то же самое.

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

  • 2
    В настройках драйвера ODBC в пользовательском интерфейсе коннектора ODBC mySQL есть кнопка «Проверить соединение». Ты это пробовал?
  • 0
    Я не думаю, что у меня есть это ... Это означает, что я должен установить что-то, чтобы это работало? Извините, я настоящий нуб с этим, все, что я знаю, написано в приведенном выше коде: P Спасибо
Теги:
odbc
visual-c++

1 ответ

0

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

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

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

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

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

  • 0
    Я пробовал все это, но ни один из них не работал (я также пробовал MySQL Connector C и C ++, но они были одинаковыми), поэтому я создал примитивную программу JDBC, которая передает запросы на сервер, и это ответ обратно на мой Приложение C ++. Это довольно медленно, но, по крайней мере, работает. Но все равно спасибо за совет.
  • 0
    Вы проверили в диспетчере ODBC, что установлен драйвер MySQL? Это в списке драйверов?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню