Не удается получить данные из таблицы MySQL в C ++ - PullRequest
0 голосов
/ 24 сентября 2019

Я пытаюсь получить содержимое таблицы mysql в зависимости от строковой переменной, переданной в функцию GetUserDetails, программа компилируется, но показывает какой-либо результат.я использую визуальный редактор кода студии o / p.Я использовал c ++ как вы из своего кода.Я сослался на ссылку ниже.
https://dev.mysql.com/doc/refman/5.7/en/mysql-stmt-fetch.html
Пожалуйста, помогите.Спасибо.

**#include <iostream>
    #include <string>
    #include <vector>
    #include <mutex>
    #include <unordered_set>
    #include <mysql.h>


    void GetUserDetails(std::string &fetch_name)
    {
        MYSQL mysql;
        MYSQL * conn;
        MYSQL_RES * result;
        //MYSQL_ROW row;

        int  param_count, column_count, row_count;
        int id;
        signed char status;
        std::string name, user_name, gender, address;
        MYSQL_TIME dateofbirth, datecreated;
        bool       is_null[8];
        bool       error[8];
        unsigned long length[8];

        std::cout << "In func:\n";
        mysql_init(&mysql);
        conn = mysql_real_connect(&mysql, "localhost", "root", "Rummy@123", "rummy", 0, 0, 0);
        if (conn == NULL) {
            std::cout << "couldn't connect to mysql server:\n";
        }
        const char * query = "select * from account_details where user_name = \"fetch_name\"";

        MYSQL_STMT *stmt = mysql_stmt_init(&mysql);
        if(mysql_stmt_prepare(stmt, query, strlen(query)))
        {
            fprintf(stderr, " mysql_stmt_prepare(), INSERT failed\n");
            fprintf(stderr, " %s\n", mysql_stmt_error(stmt));

        }
        // Fetch result set meta information
        MYSQL_RES *prepare_meta_result = mysql_stmt_result_metadata(stmt);
        if (!prepare_meta_result)
        {
            fprintf(stderr,
                " mysql_stmt_result_metadata(), \
               returned no meta information\n");
            fprintf(stderr, " %s\n", mysql_stmt_error(stmt));

        }

        // Get total columns in the query 
        column_count = mysql_num_fields(prepare_meta_result);
        fprintf(stdout,
            " total columns in SELECT statement: %d\n",
            column_count);

        // Execute the SELECT query
        if (mysql_stmt_execute(stmt))
        {
            fprintf(stderr, " mysql_stmt_execute(), failed\n");
            fprintf(stderr, " %s\n", mysql_stmt_error(stmt));

        }

        MYSQL_BIND    bind[8];
        // INTEGER COLUMN 
        bind[0].buffer_type = MYSQL_TYPE_LONG; 
        bind[0].buffer = (char *)&id;
        bind[0].is_null = &is_null[0];
        bind[0].length = &length[0];
        bind[0].error = &error[0];
        //   STRING COLUMN
        bind[1].buffer_type = MYSQL_TYPE_STRING;
        bind[1].buffer = (char*)name.c_str();
        bind[1].buffer_length = name.length() + 1;
        bind[1].is_null = &is_null[1];
        bind[1].length = &length[1];
        bind[1].error = &error[1];
        // STRING COLUMN 
        bind[2].buffer_type = MYSQL_TYPE_STRING;
        bind[2].buffer = (char*)user_name.c_str();
        bind[2].buffer_length = user_name.length() + 1;
        bind[2].is_null = &is_null[2];
        bind[2].length = &length[2];
        bind[2].error = &error[2];
        // TIMESTAMP COLUMN 
        bind[3].buffer_type = MYSQL_TYPE_TIMESTAMP;
        bind[3].buffer = (char *)&dateofbirth;
        bind[3].is_null = &is_null[3];
        bind[3].length = &length[3];
        bind[3].error = &error[3];
        // STRING COLUMN 
        bind[4].buffer_type = MYSQL_TYPE_STRING;
        bind[4].buffer = (char *)gender.c_str();
        bind[4].buffer_length = gender.length() + 1;
        bind[4].is_null = &is_null[4];
        bind[4].length = &length[4];
        bind[4].error = &error[4];
        // STRING COLUMN 
        bind[5].buffer_type = MYSQL_TYPE_STRING;
        bind[5].buffer = (char *)address.c_str();
        bind[5].buffer_length = address.length() + 1;
        bind[5].is_null = &is_null[5];
        bind[5].length = &length[5];
        bind[5].error = &error[5];
        // TIMESTAMP COLUMN 
        bind[6].buffer_type = MYSQL_TYPE_TIMESTAMP;
        bind[6].buffer = (char *)&datecreated;
        bind[6].is_null = &is_null[6];
        bind[6].length = &length[6];
        bind[6].error = &error[6];
        // INTEGER COLUMN 
        bind[7].buffer_type = MYSQL_TYPE_LONG;
        bind[7].buffer = (char *)&status;
        bind[7].is_null = &is_null[7];
        bind[7].length = &length[7];
        bind[7].error = &error[7];

        // Bind the result buffers 
        if (mysql_stmt_bind_result(stmt, bind))
        {
            fprintf(stderr, " mysql_stmt_bind_result() failed\n");
            fprintf(stderr, " %s\n", mysql_stmt_error(stmt));

        }

        // Now buffer all results to client (optional step) 
        if (mysql_stmt_store_result(stmt))
        {
            fprintf(stderr, " mysql_stmt_store_result() failed\n");
            fprintf(stderr, " %s\n", mysql_stmt_error(stmt));

        }

        int row = 0;
        std::cout << "before while:\n";
        while (!mysql_stmt_fetch(stmt))
        {
            row++;
            std::cout << "row count: " << row << "\n";
            // Column1.
            if (is_null[0])
                std::cout << "NULL:\n";
            else
                std::cout << id << length[0] << "\n";
            // Column2
            if (is_null[1])
                std::cout << "NULL:\n";
            else
                std::cout << name << length[1] << "\n";
            // Column3
            if(is_null[2])
                std::cout << "NULL:\n";
            else
                std::cout << user_name << length[2] << "\n";
            //column4...
            if (is_null[3])
                std::cout << "NULL: \n";
            else
                std::cout << dateofbirth.year << dateofbirth.month << dateofbirth.day << length[3] << "\n";
            // column5...
            if (is_null[4])
                std::cout << "NULL: \n";
            else
                std::cout << gender << length[4] << "\n";
            // column 6...
            if (is_null[5])
                std::cout << "NULL:\n";
            else
                std::cout << address << length[5] << "\n";
            // column 7...
            if (is_null[6])
                std::cout << "NULL:\n";
            else
                std::cout << datecreated.year << datecreated.month << datecreated.day << datecreated.hour
                << datecreated.minute << datecreated.second << length[6] << "\n";
            //column 8 ...
            if (is_null[7])
                std::cout << "NULL:\n";
            else
                std::cout << status << length[7] << "\n";
        }
        std::cout << "after while:\n";

        // Free the prepared result metadata 
        mysql_free_result(prepare_meta_result);
        mysql_stmt_close(stmt);

        mysql_close(conn);
    }




    int main()
    {
        std::string name("Arunreddy");
        GetUserDetails(name);
        std::cin.get();
        return 0;
    }**
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...