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 *connection, mysql;

int state;

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


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


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

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)



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)



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:


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:



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

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



12 Responses to “How to connect to a MySQL DB using c++ Linux?”

  1. Honey Says:

    I have still some confussion HOW CAN I CONNECT MYSQL IN BECKEND TO MY PROJECT……
    Plzzzzzzzzz some one help out

  2. StianXXs Says:

    I get this ERROR:
    `MYSQL_RES’ undeclared (first use this function)
    What wrong?

    Contact me on

  3. A programmer Says:

    Post the code without the comments for easy c/p

  4. vinod Says:

    there is no file like mysql.h and no directory /usr/include/mysql
    can u tell me how can i get that????

    Do i need to install some kinda connector like mysql++

  5. Bogdan Says:

    Hy. I`ve read your example code and I tried to create a .cpp file with. When I try to compile it says that MYSQL/MYSQL_RES/MYSQL_ROW was not declared in this scope.
    I tried to change the include line from #inlcude to #include but no good results.

    I`m using Ubuntu 8.04 with Eclipse C/C++ IDE.
    Can you tell me what could be the problem and if I can connect to a MySQL database creating the program through a IDE?

  6. testalucida Says:

    great first step to working with mysql – thank you!

  7. aldo Says:

    thanks man!
    i will try your code

  8. righteous Says:

    Good, but this is the C API. You should be using the Connecter C++ API from MySQL

  9. dave nicholas Says:

    It’s worth mentioning when using your IDE you can also add the mysqlclient to the libraries list.

  10. CoolMan Says:

    Cool! I needed this.

    Thanks man!

  11. Alex Says:

    Hi , good post .
    only tht you used the SQL c API .
    there is also a C++ only Connector which is object oriented
    that worth a mention.

  12. Etienne Says:

    Hi Vladimir,

    Thank you, working perfectly here, I used a slightly different compile command as the one given gave some problems on my linux box, the compile command for anyone else to try: g++ test.cpp -I/usr/include/mysql -L/usr/lib/mysql -lmysqlclient_r -o test

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s

%d bloggers like this: