How to connect to a MySQL DB using c++ Linux?

C++ is a very good programming language with high-level and low-level capabilities.

Linux is a Unix-like computer operating system. It promotes community of free and open source software. Almost using those instruments it is possible to make a complex and sophisticate enterprise system.

MySQL is a multithreaded, multi-user SQL database management system. It is a popular database system, which has more than 10 million installations.

In this article is shown how to connect to a MySQL database using C++ under a Linux operating system.

First of all we include all needed libraries:

#include <sys/time.h>

#include <stdio.h>

#include <mysql.h>

Now we declare main function:

int main(char **args)

{

// code

return 0;

};

Next, we declare all necessary variables:

MYSQL_RES *result;

MYSQL_ROW row;

MYSQL *connection, mysql;

int state;

Of course if we want to use MySQL database, we must connect to it, using the next code:

mysql_init(&mysql);

connection = mysql_real_connect(&mysql,host,usr,pswd,database,0,0,0);

Where

host – is a host name, the location of the MySQL database server, for example “localhost” or “remotehost.com”

usr – is the username

pswd – is the password

database – is the name of the MySQL database from the Host.

If something goes wrong, for example password is not right, we must know it, and display the error message:

if (connection == NULL)

{

printf(mysql_error(&mysql));

return 1;

}

Now we make a simple query like “SELECT * FROM mytable” and check if it has no errors, where “mytable” is the name of wished table:

state = mysql_query(connection, “SELECT * FROM mytable”);

if (state !=0)

{

printf(mysql_error(connection));

return 1;

}

After the successful execution of the query, we must store the results somewhere:

result = mysql_store_result(connection);

Using mysql_num_rows function, we can get number of rows from result:

printf(“Rows:%d\n”,mysql_num_rows(result));

Using while statement and mysql_fetch_row functions, it possible to process each row in the result set:

while ( ( row=mysql_fetch_row(result)) != NULL )

{

printf(” %s, %s\n”, (row[0] ? row[0] : “NULL”), (row[1] ? row[1] : “NULL” ));

}

At the end, we must free the memory:

mysql_free_result(result);

mysql_close(connection);

IMPORTANT!!! How to make this code under Linux?

g++ test.cpp -I/usr/include/mysql /usr/lib/mysql/libmysqlclient.so

Enjoy!