Бесплатная IDE и компилятор C/C++ для создания программы доступа к MySQL через командную строку.

Вопрос или проблема

Мне просто нужно написать короткую программу командной строки, чтобы выполнить SELECT и конвертировать результат в формат CSV, поэтому я открыт для любых бесплатных решений IDE/компилятора для Windows 10.

Я попробовал MS Visual Studio и официальный коннектор MySQL, но в меню Инструменты/Подключиться к базе данных я вижу только опции для MS и Oracle, ничего для MySQL.

Так что, я полагаю, я ищу что-то другое?


[Обновление] Смотрите, ребята, я ценю, что вы пытаетесь помочь, но, пожалуйста, больше никаких ответов со хранимыми процедурами или подобным.

Я должен иметь возможность подключаться к базе данных MySQL и выполнять произвольные команды (плюс множество другой нефункциональности MySQL) из C++.

Также обратите внимание, что я не хочу управлять MySQL через функцию c shell(), popen() или подобные, как это делается из командной строки. Мне нужно использовать коннектор базы данных из C++.

Можем ли мы сосредоточиться на рекомендациях IDE, которая упростит это? Спасибо.

Я думаю, что Eclipse IDE имеет коннектор MySQL. Вот объяснение о том, как установить его в Eclipse.

Eclipse также поддерживает разработку программного обеспечения на C/C++ – с помощью Eclipse CDT (набор инструментов для разработки C/C++), и является одним из самых известных бесплатных программных IDE. Он не идеален – и определенно не так отполирован для использования C/C++, как для Java – но я использую его широко. Вы абсолютно можете использовать его для написания приложений командной строки, особенно тех, которые отправляют запросы к СУБД и записывают вывод в CSV.

Единственное неизвестное – может ли коннектор MySQL для Eclipse взаимодействовать или даже сосуществовать с CDT. Это вам нужно будет проверить самостоятельно, так как я не использую MySQL и его коннектор с Eclipse.

Хотя я добавлю, что даже без компонента коннектора у вас все равно не должно возникнуть проблем с написанием вашей программы, используя Eclipse в качестве IDE.

Как насчет встроенной хранимой процедуры:

http://blog.secaserver.com/2014/10/mysql-export-table-split-csv-stored-procedure/

https://stackoverflow.com/questions/11039324/stored-procedure-that-exports-data-into-csv-files-only-exports-to-one-file

Ссылки с вышеуказанного стека переполнения:

DECLARE 
   @StartDT DATE, 
   @TableName NVARCHAR(50), 
   @FileLocation VARCHAR(255);

SET @TableName = N'ViewAccountDetail';

SELECT @StartDT = DATEADD(MONTH, DATEDIFF(MONTH, '19000101', MIN(dos)), '19000101')
   FROM dbo.accn_demographics;

   PRINT @StartDT;
-- ^^^^^ отладка 101 - с какого месяца мы, по вашему мнению, начинаем?

WHILE @StartDT < '20110901'
BEGIN
    SET @FileLocation = 'C:\test\' + @TableName
      + CONVERT(CHAR(10), @StartDT, 120) + '.csv';

      PRINT @FileLocation;
    --^^^^^ опять же, отладка 101 - как сейчас выглядит имя файла?

    --EXEC BCP_Text_File @TableName, @FileLocation    
    SET @StartDT = DATEADD(MONTH, 1, @StartDT);
END

Без компиляции, без IDE, и теперь без внешних файлов по запросу пользователя.

SELECT 
    orderNumber, status, orderDate, requiredDate, comments
FROM
    orders
WHERE
    status="Cancelled" 
INTO OUTFILE 'C:/tmp/cancelled_orders.csv' 
FIELDS ENCLOSED BY '"' 
TERMINATED BY ';' 
ESCAPED BY '"' 
LINES TERMINATED BY '\r\n';

Готово, нет IDE, нет компиляции.

Сохраните командную строку выше в blah.txt

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

mysql -u root -ppassword databaseName <blah.txt

Это показывает пример:

https://stackoverflow.com/questions/3453168/c-program-mysql-connection

Ответ или решение

Для разработки командного приложения на C/C++, которое будет выполнять запросы к базе данных MySQL и конвертировать результаты в CSV формат, есть несколько отличных бесплатных IDE и компиляторов, которые помогут вам в этом процессе. Ниже вы найдете подробное руководство, которое уникально освещает вашу задачу и предлагает действительно полезные инструменты.

Рекомендуемые IDE и компиляторы

  1. Code::Blocks

    • Описание: Это бесплатная кросс-платформенная IDE для C/C++. Она поддерживает различные компиляторы, включая MinGW, что делает ее удобной для разработки под Windows.
    • Поддержка MySQL: Для работы с MySQL вам нужно будет использовать библиотеки MySQL Connector/C. Установив библиотеку, вы сможете подключать C/C++ код к вашей базе данных.
  2. Dev-C++

    • Описание: Легкая и быстрая IDE для Windows, которая также поддерживает MinGW как компилятор. Она достаточно проста в освоении и позволяет быстро собирать проекты.
    • Поддержка MySQL: Как и в случае с Code::Blocks, потребуется установка MySQL Connector/C. После этого вы сможете выполнять необходимые команды из вашей программы.
  3. CLion (бесплатный период)

    • Описание: Хотя CLion не бесплатен, он предлагает короткий пробный период. Это мощная IDE от JetBrains, поддерживающая C/C++. Она имеет множество встроенных возможностей для управления проектами.
    • Поддержка MySQL: CLion может использовать внешние библиотеки, такие как MySQL Connector/C, что обеспечит вам все необходимые инструментальные средства для создания доступа к MySQL.

Установка MySQL Connector/C

  1. Скачивание: Вам нужно скачать MySQL Connector/C с официального сайта MySQL.
  2. Установка: Установите его, следуя инструкциям установщика. Убедитесь, что вы добавили путь к библиотекам в переменные среды, чтобы IDE могла их распознавать.
  3. Создание проекта: В выбранной вами IDE создайте новый проект и подключите заголовочные файлы и библиотеки MySQL в настройках проекта.

Пример кода для выполнения запроса к MySQL и конвертации результатов в CSV

Пример ниже демонстрирует, как можно подключиться к базе данных MySQL, выполнить запрос и сохранить результаты в CSV-файл:

#include <iostream>
#include <fstream>
#include <mysql/mysql.h>

int main() {
    MYSQL *conn;
    MYSQL_RES *res;
    MYSQL_ROW row;

    conn = mysql_init(NULL);

    // Подключение к базе данных
    if (mysql_real_connect(conn, "localhost", "username", "password", "database", 0, NULL, 0) == NULL) {
        std::cerr << "mysql_real_connect() failed\n";
        mysql_close(conn);
        return EXIT_FAILURE;
    }

    // Выполнение запроса
    if (mysql_query(conn, "SELECT orderNumber, status, orderDate FROM orders WHERE status='Cancelled'")) {
        std::cerr << "SELECT failed. Error: " << mysql_error(conn) << "\n";
        mysql_close(conn);
        return EXIT_FAILURE;
    }

    res = mysql_store_result(conn);
    if (res == NULL) {
        std::cerr << "mysql_store_result() failed. Error: " << mysql_error(conn) << "\n";
        mysql_close(conn);
        return EXIT_FAILURE;
    }

    // Создание файла CSV
    std::ofstream csvFile("output.csv");
    if (csvFile.is_open()) {
        while ((row = mysql_fetch_row(res))) {
            csvFile << row[0] << "," << row[1] << "," << row[2] << "\n";
        }
        csvFile.close();
    } else {
        std::cerr << "Could not open the file.\n";
    }

    mysql_free_result(res);
    mysql_close(conn);
    return EXIT_SUCCESS;
}

Заключение

С использованием правильной IDE и MySQL Connector/C, вы сможете успешно разработать командное приложение, которое выполняет SQL запросы и сохраняет результаты в CSV формат. Рекомендуемые IDE, такие как Code::Blocks и Dev-C++, обеспечивают все необходимые инструменты, чтобы сделать процесс разработки простым и эффективным. Настройка подключения к базе данных и выполнение запросов обеспечит полный контроль над вашей системой и данными.

Не забудьте установить соответствующие библиотеки и следить за совместимостью версий. Удачи в разработке вашего приложения!

Оцените материал
Добавить комментарий

Капча загружается...