Results 1 to 2 of 2
  1. #1
    Join Date
    Apr 2016
    Posts
    1

    Unanswered: Mysql c++ application help

    I was wondering if anyone can help me figure how to do something. I have created an C++ application with a menu that links to mySql database to pull data from. I have managed to pull data from my program to display it in c++ but the output formatting is total messed up. I have tried to make it look nice but my data doesn't seem to line up correctly.

    So I was wondering if someone could tell me how to fix my formatting issue?

    Another question is how to add data into mySQL database because one of the options is to add some data into a field. I have checked this online but can't seem to find exactly how to do this.

    My query for option 2 and 3 don't seem to work, can you help me fix them?

    Here is my C++ program:

    #include <stdio.h>
    #include <mysql.h>
    #include <iostream>
    #include <iomanip>
    using namespace std;
    #define SERVER "students"
    #define USER "********"
    #define PASSWORD "*********"
    #define DATABASE "cs566402"

    int main() {

    MYSQL *connect, mysql; //Creates a pointer to the MySQL instance
    connect = mysql_init(&mysql); // Initialize the instance
    connect = mysql_real_connect(connect, SERVER, USER, PASSWORD, DATABASE, 0, NULL, 0); //Connect to the specific database
    if (connect) {
    cout << "connection Succeeded\n";
    } else {
    cout << "connection failed\n";
    }
    MYSQL_RES *res_set;
    MYSQL_ROW row;

    cout << endl;
    int option;
    do {
    cout << "1) List all wines that any winery produces " << endl;
    cout << "2) List all wineries in a particular region " << endl;
    cout << "3) List all wines with all of the grape varieties included in each wine" << endl;
    cout << "4) Add a new winery (when adding a winery
    there is no need for it to have any wines associated, but you must be able to put it in an existing
    region)" << endl;
    cout << "5) Exit Program " << endl;
    cout << endl;
    //Prompting user to enter an option according to menu
    cout << "Please select an option : ";
    cout << endl;
    cin >> option; // taking option value as input and saving in variable "option"

    if (option == 1) // Checking if user selected option 1
    {
    mysql_query(connect, "select w.WineId, w.WineName, wn.WineryName from Wine w, Winery wn where w.WineryId = wn.WineryId");
    unsigned int i = 0;
    res_set = mysql_store_result(connect);
    unsigned int numrows = mysql_num_rows(res_set);

    cout << setfill('-') << setw(1) << "+" << setw(11) << "-" << setw(1) << "+" << setw(45) << "-" << setw(1) << "+" << setw(30) << "-" << setw(1) << "+" << endl;
    cout << setfill(' ') << setw(31) << left << "WineId" << setw(33) << left << "WineName" << setw(24) << left << "WineryName" << endl;
    cout << setfill('-') << setw(1) << "+" << setw(11) << "-" << setw(1) << "+" << setw(45) << "-" << setw(1) << "+" << setw(30) << "-" << setw(1) << "+" << endl;

    while (((row = mysql_fetch_row(res_set)) != NULL)) { //cout<<" %s\n",row[i] !=NULL?row[i] : "NULL";

    cout << setw(1) << left << row[i] << " \t \t" << setw(31) << row[i + 1] << " \t \t" << setw(11) << right << row[i + 2] << endl;
    }
    } else if (option == 2) // Checking if user selected option 2
    {
    mysql_query(connect, "select WineryName, Region from Winery");
    unsigned int i = 0;
    res_set = mysql_store_result(connect);
    unsigned int numrows = mysql_num_rows(res_set);
    while (((row = mysql_fetch_row(res_set)) != NULL)) { //cout<<" %s\n",row[i] !=NULL?row[i] : "NULL";

    cout << "|" << row[i] << "| \t";
    cout << row[i + 1] << endl;
    }
    } else if (option == 3) // Checking if user selected option 3
    {
    mysql_query(connect, "select g.GrapeType, w.WineName from GrapeType g, Wine w, Varieties v where g.GrapeId = v.GrapeId and v.WineId = w.WineId");
    unsigned int i = 0;
    res_set = mysql_store_result(connect);
    unsigned int numrows = mysql_num_rows(res_set);
    while (((row = mysql_fetch_row(res_set)) != NULL)) { //cout<<" %s\n",row[i] !=NULL?row[i] : "NULL";

    cout << "|" << row[i] << "| \t";
    cout << row[i + 1] << endl;
    }
    } else if (option == 4) // Checking if user selected option 3
    {

    } else if (option == 5) // Checking if user selected option 4
    {
    cout << "Terminating Program" << endl;
    } else //if user has entered invalid choice (other than 1,2,3,4, or 5)
    {
    //Displaying error message
    cout << "Invalid Option entered" << endl;
    }
    } while (option != 5); //condition of do-while loop

    //return 0;



    mysql_close(connect);
    return 0;
    }


    Thanks in advance.


    Click image for larger version. 

Name:	mysql tables.png 
Views:	4 
Size:	165.1 KB 
ID:	16850Click image for larger version. 

Name:	program output.png 
Views:	4 
Size:	111.3 KB 
ID:	16851

  2. #2
    Join Date
    Nov 2004
    Location
    out on a limb
    Posts
    13,692
    Provided Answers: 59
    so its not really a MySQL problem, more of a C formatting priblem. presumably then most of this could be handled by using printf as opposed to cout
    I'd rather be riding on the Tiger 800 or the Norton

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •