Я пытаюсь получить содержимое таблицы 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;
}**