Подтвердить что ты не робот

Как подключить базу данных mySQL с помощью С++

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

Как мне это сделать? Может ли кто-нибудь сделать пример и рассказать мне, какие библиотеки я должен использовать?

4b9b3361

Ответ 1

Ясно, что вы не искали правильные уголки Интернета, потому что я нашел пример за несколько секунд:

/* Standard C++ includes */
#include <stdlib.h>
#include <iostream>

/*
  Include directly the different
  headers from cppconn/ and mysql_driver.h + mysql_util.h
  (and mysql_connection.h). This will reduce your build time!
*/
#include "mysql_connection.h"

#include <cppconn/driver.h>
#include <cppconn/exception.h>
#include <cppconn/resultset.h>
#include <cppconn/statement.h>

using namespace std;

int main(void)
{
cout << endl;
cout << "Running 'SELECT 'Hello World!' »
   AS _message'..." << endl;

try {
  sql::Driver *driver;
  sql::Connection *con;
  sql::Statement *stmt;
  sql::ResultSet *res;

  /* Create a connection */
  driver = get_driver_instance();
  con = driver->connect("tcp://127.0.0.1:3306", "root", "root");
  /* Connect to the MySQL test database */
  con->setSchema("test");

  stmt = con->createStatement();
  res = stmt->executeQuery("SELECT 'Hello World!' AS _message"); // replace with your statement
  while (res->next()) {
    cout << "\t... MySQL replies: ";
    /* Access column data by alias or column name */
    cout << res->getString("_message") << endl;
    cout << "\t... MySQL says it again: ";
    /* Access column fata by numeric offset, 1 is the first column */
    cout << res->getString(1) << endl;
  }
  delete res;
  delete stmt;
  delete con;

} catch (sql::SQLException &e) {
  cout << "# ERR: SQLException in " << __FILE__;
  cout << "(" << __FUNCTION__ << ") on line " »
     << __LINE__ << endl;
  cout << "# ERR: " << e.what();
  cout << " (MySQL error code: " << e.getErrorCode();
  cout << ", SQLState: " << e.getSQLState() << " )" << endl;
}

cout << endl;

return EXIT_SUCCESS;
}

Ответ 2

Наконец, я смог успешно скомпилировать программу с коннектором С++ в Ubuntu 12.04 Я установил соединитель, используя эту команду

'apt-get install libmysqlcppconn-dev'

Первоначально я столкнулся с той же проблемой, что и "undefined ссылка на` get_driver_instance '", чтобы решить эту проблему. Я объявляю свою переменную экземпляра драйвера типа MySQL_Driver. Для получения справки этот тип определен в файле mysql_driver.h. Вот фрагмент кода, который я использовал в своей программе.

sql::mysql::MySQL_Driver *driver;
try {     
    driver = sql::mysql::get_driver_instance();
}

и я скомпилировал программу с помощью опции -l mysqlcppconn linker

и не забудьте включить этот заголовок

#include "mysql_driver.h" 

Ответ 3

Да, вам понадобится библиотека соединителей mysql С++. Прочтите ниже, где я объясню, как получить пример, данный разработчиками mysql для работы.

Примечание (и решение): IDE: Я пробовал использовать Visual Studio 2010, но всего несколько отбросов назад получили все, чтобы работать, кажется, что я пропустил это в руководстве, но он предлагает для использования Visual Studio 2008. Я загрузил и установил VS2008 Express для С++, выполнил шаги в главе 5 руководства и ошибки исчезли! Оно работает. Я счастлив, проблема решена. За исключением того, как заставить его работать над новыми версиями визуальной студии. Вы должны попробовать mysql для визуальной студийной аддоны, которая, возможно, получит vs2010 или выше, чтобы успешно соединиться. Его можно загрузить с сайта mysql

В то время как вы пытаетесь заставить приведенный выше пример работать, я нахожусь здесь из-за трудностей из-за изменений на веб-сайте mysql dev. Я прошу прощения за то, что написал это как ответ, так как я не могу комментировать, и отредактирую это, поскольку я обнаруживаю, что делать и находить решение, чтобы будущим разработчикам помогать (так как это стало настолько большим, t в любом случае, как комментарий, ха-ха)

@hd1 ссылка на "пример" больше не работает. По ссылке вы попадете на страницу, которая даст вам ссылку на основное руководство. Основное руководство - хорошая рекомендация, но, похоже, довольно старая и устаревшая и сложная для новых разработчиков, поскольку у нас нет опыта, особенно если нам не хватает определенного файла, а затем что добавить.

Ссылка

@hd1 перемещена и может быть найдена с помощью быстрого поиска, удалив компоненты url, сохраняя только название статьи, здесь это в любом случае: http://dev.mysql.com/doc/connector-cpp/en/connector-cpp-examples-complete-example-1.html

Получение 7.5 Коннектор MySQL/С++ Заполните пример 1 для работы

Загрузки:

-Получить соединитель mysql С++, хотя он больше выбирает пакет установщика, а не zip.

-Получить библиотеки boost с boost.org, поскольку boost используется в connection.h и mysql_connection.h из соединителя mysql С++

Теперь продолжайте:

-Установите разъем на свой диск c, затем перейдите в папку установки /lib сервера mysql-сервера и скопируйте все файлы libmysql и вставьте в папку установки вашего устройства /lib/opt

-Удалить библиотеку boost на ваш диск c

Далее:

Хорошо скопировать код, как он есть из примера (связанного выше, и, конечно, в новый проект на С++). Вы заметите ошибки:

-Первый: изменить

cout << "(" << __FUNCTION__ << ") on line " »
 << __LINE__ << endl;

к

cout << "(" << __FUNCTION__ << ") on line " << __LINE__ << endl;

Не уверен, для чего нужна эта маленькая двойная стрелка, но я не думаю, что это часть С++

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

[Примечание 1]: Глава 5 Построение MySQL Connector/С++ Приложения Windows с Microsoft Visual Studio Если вы следуете этой главе, используя последний С++-соединитель, вы, вероятно, увидите, что то, что находится в папке вашего соединителя, и то, что показано на изображениях, совсем другое. Если вы посмотрите в инсталляции сервера mysql и в папках lib или в папках сокетов коннектора mysql С++, то они не будут идеально соответствовать, если они не обновят руководство, или у вас есть волшебная загрузка, но для меня они не Совпадение с загрузкой разъема началось в марте 2014 года.

Просто следуйте этой главе 5,

-Но для c/С++ общие, дополнительные каталоги Include включают папку "include" из установленного вами соединителя, а не папку установки сервера

-Как сделать выше, также включите вашу папку boost, см. примечание 2 ниже

-И для Linker, General.. и т.д. используйте папку opt из коннектора /lib/opt

* [Примечание 2] * Второе включение должно произойти, вам нужно включить из библиотеки boost.hpp boost, это делается так же, как и выше, добавьте основную папку, которую вы извлекли из загрузки ускоренного zip, а не boost или lib или вложенную папку "вариант", найденную в boostmainfolder/boost. Только основная папка в качестве второго включает

Далее:

Что будет дальше, я думаю, это Static Build, и это все, что я сделал. Следуйте за ним.

Затем создайте/скомпилируйте. Появляются ошибки LNK (Edit: Gone after change ide to visual studio 2008). Я думаю, что это потому, что я должен сам создавать соединитель (если вы делаете это в Visual Studio 2010, тогда ссылки должны исчезнуть), но он работал над попыткой заставить это работать с четверга, увидит, есть ли у меня мотивация, чтобы увидеть это через после хорошего ночного сна (и сделал, и теперь закончил:)).

Ответ 4

Мне пришлось включить -lmysqlcppconn в мою сборку, чтобы заставить ее работать.