{"id":76,"date":"2006-02-02T21:38:04","date_gmt":"2006-02-03T02:38:04","guid":{"rendered":"http:\/\/www.latindevelopers.com\/ivancp\/2006\/02\/mysql-desde-c\/"},"modified":"2011-11-28T18:28:16","modified_gmt":"2011-11-28T23:28:16","slug":"mysql-desde-cpp","status":"publish","type":"post","link":"https:\/\/www.latindevelopers.com\/ivancp\/2006\/02\/mysql-desde-cpp\/","title":{"rendered":"Leer datos MySQL desde C++ sobre Linux"},"content":{"rendered":"<p><img data-attachment-id=\"249\" data-permalink=\"https:\/\/www.latindevelopers.com\/ivancp\/2011\/04\/show-table-status-mejorado\/logo-mysql-170x115\/\" data-orig-file=\"https:\/\/www.latindevelopers.com\/ivancp\/wp-content\/uploads\/logo-mysql-170x115-e1302270861102.png\" data-orig-size=\"100,67\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;}\" data-image-title=\"Logo mysql\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/www.latindevelopers.com\/ivancp\/wp-content\/uploads\/logo-mysql-170x115-e1302270861102.png\" data-large-file=\"https:\/\/www.latindevelopers.com\/ivancp\/wp-content\/uploads\/logo-mysql-170x115-e1302270861102.png\" loading=\"lazy\" class=\"alignright size-full wp-image-249\" title=\"Logo mysql\" src=\"http:\/\/www.latindevelopers.com\/ivancp\/wp-content\/uploads\/logo-mysql-170x115-e1302270861102.png\" alt=\"\" width=\"100\" height=\"67\" \/>Resulta que algunas veces es necesario acceder desde C\/C++ a MySQL, razones hay muchas&#8230;. el asunto es como hacerlo.<\/p>\n<p>Antes de hacer cualquier cosa debemos instalar las librer\u00edas de desarrollo de MySQL:<\/p>\n<pre>sudo apt-get install libmysqlclient-dev<\/pre>\n<p>Todos los archivos que necesitaremos van a estar ubicados en \/usr\/include\/mysql y \/usr\/lib\/mysql , los par\u00e1metros para compilar un archivo simple es como sigue:<\/p>\n<pre>gcc <strong>archivo<\/strong>.cpp \\\r\n           -o <strong>archivo<\/strong> \\\r\n           -I\/usr\/include\/mysql -L\/usr\/lib\/mysql \\\r\n           -lmysqlclient -lstdc++ -lz<\/pre>\n<p>Una breve descripci\u00f3n de los par\u00e1metros:<\/p>\n<ul>\n<li><code>-o<\/code> (<strong>o<\/strong>utput) indica el nombre que va a tener el archivo de resultado<\/li>\n<li><code>-I<\/code> le dice al compilador que incluya una ruta adicional para los archivos de inclusi\u00f3n<\/li>\n<li><code>-L<\/code> le dice al enlazador que incluya una ruta adicional para los archivos de librer\u00eda dependientes<\/li>\n<li><code>-l<\/code> (ele minuscula) le dice al enlazador que incluya la librer\u00eda especificada<\/li>\n<li><code>\\<\/code> es el caracter que usamos en la linea de comando para ejecutar varias lineas como una sola expresi\u00f3n.<\/li>\n<\/ul>\n<p>Escrib\u00ed para ustedes un c\u00f3digo de ejemplo, no es gran cosa pero les va a dar luces para sus proyectos:<\/p>\n<pre lang=\"cpp\">\/\/conexion.cpp\r\n#include <iostream>\r\n#include <string.h>\r\n#include <mysql.h>\r\n \r\nusing namespace std;\r\n \r\nint main(int argc, char *argv[])\r\n{\r\n    MYSQL mysql;\r\n \r\n    mysql_init(&mysql);\r\n    if (!mysql_real_connect(&mysql\r\n\t\t,\"localhost\"\r\n\t\t,\"root\"\r\n\t\t,\"\"\r\n\t\t,\"ciudades\",0,NULL,0))\r\n    {\r\n        cerr<<\"Horror ! : \"\r\n\t    <<mysql_error(&#038;mysql);\r\n    }\r\n    const char *query = \"select * from ciudades\";\r\n \r\n    mysql_real_query(&#038;mysql,query,strlen(query));\r\n    MYSQL_RES *res = mysql_store_result(&#038;mysql);\r\n    MYSQL_ROW row;\r\n \r\n    while ((row = mysql_fetch_row(res)))\r\n    {\r\n            cout << row[0] << \" \" << row[1] << endl;\r\n    }\r\n \r\n    mysql_close(&#038;mysql);\r\n    return 0;\r\n}<\/pre>\n<p>El resultado de la ejecuci\u00f3n es: <\/p>\n<pre>ivancp@ubuntu$ .\/conexion\r\n01 AMAZONAS\r\n02 ANCASH\r\n03 APURIMAC\r\n04 AREQUIPA\r\n05 AYACUCHO\r\n06 CAJAMARCA\r\n07 CALLAO\r\n08 CUSCO\r\n09 HUANCAVELICA\r\n10 HUANUCO\r\n11 ICA\r\n12 JUNIN\r\n13 LA LIBERTAD\r\n14 LAMBAYEQUE\r\n15 LIMA\r\n16 LORETO\r\n17 MADRE DE DIOS\r\n18 MOQUEGUA\r\n19 PASCO\r\n20 PIURA\r\n21 PUNO\r\n22 SAN MARTIN\r\n23 TACNA\r\n24 TUMBES\r\n25 UCAYALI<\/pre>\n<p>Espero les sirva mucho!<\/p>\n<div class=\"sharedaddy sd-sharing-enabled\"><div class=\"robots-nocontent sd-block sd-social sd-social-icon-text sd-sharing\"><h3 class=\"sd-title\">Compartelo:<\/h3><div class=\"sd-content\"><ul><li class=\"share-facebook\"><a rel=\"nofollow noopener noreferrer\" data-shared=\"sharing-facebook-76\" class=\"share-facebook sd-button share-icon\" href=\"https:\/\/www.latindevelopers.com\/ivancp\/2006\/02\/mysql-desde-cpp\/?share=facebook\" target=\"_blank\" title=\"Haz clic para compartir en Facebook\"><span>Facebook<\/span><\/a><\/li><li class=\"share-twitter\"><a rel=\"nofollow noopener noreferrer\" data-shared=\"sharing-twitter-76\" class=\"share-twitter sd-button share-icon\" href=\"https:\/\/www.latindevelopers.com\/ivancp\/2006\/02\/mysql-desde-cpp\/?share=twitter\" target=\"_blank\" title=\"Haz clic para compartir en Twitter\"><span>Twitter<\/span><\/a><\/li><li><a href=\"#\" class=\"sharing-anchor sd-button share-more\"><span>M\u00e1s<\/span><\/a><\/li><li class=\"share-end\"><\/li><\/ul><div class=\"sharing-hidden\"><div class=\"inner\" style=\"display: none;\"><ul><li class=\"share-email\"><a rel=\"nofollow noopener noreferrer\" data-shared=\"\" class=\"share-email sd-button share-icon\" href=\"https:\/\/www.latindevelopers.com\/ivancp\/2006\/02\/mysql-desde-cpp\/?share=email\" target=\"_blank\" title=\"Haz clic para enviar por correo electr\u00f3nico a un amigo\"><span>Correo electr\u00f3nico<\/span><\/a><\/li><li class=\"share-print\"><a rel=\"nofollow noopener noreferrer\" data-shared=\"\" class=\"share-print sd-button share-icon\" href=\"https:\/\/www.latindevelopers.com\/ivancp\/2006\/02\/mysql-desde-cpp\/\" target=\"_blank\" title=\"Haz clic para imprimir\"><span>Imprimir<\/span><\/a><\/li><li class=\"share-end\"><\/li><li class=\"share-linkedin\"><a rel=\"nofollow noopener noreferrer\" data-shared=\"sharing-linkedin-76\" class=\"share-linkedin sd-button share-icon\" href=\"https:\/\/www.latindevelopers.com\/ivancp\/2006\/02\/mysql-desde-cpp\/?share=linkedin\" target=\"_blank\" title=\"Haz clic para compartir en LinkedIn\"><span>LinkedIn<\/span><\/a><\/li><li class=\"share-end\"><\/li><\/ul><\/div><\/div><\/div><\/div><\/div>","protected":false},"excerpt":{"rendered":"<p>Resulta que algunas veces es necesario acceder desde C\/C++ a MySQL, razones hay muchas&#8230;. el asunto es como hacerlo. Antes de hacer cualquier cosa debemos instalar las librer\u00edas de desarrollo de MySQL: sudo apt-get install libmysqlclient-dev Todos los archivos que &hellip; <a href=\"https:\/\/www.latindevelopers.com\/ivancp\/2006\/02\/mysql-desde-cpp\/\">Sigue leyendo <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n<div class=\"sharedaddy sd-sharing-enabled\"><div class=\"robots-nocontent sd-block sd-social sd-social-icon-text sd-sharing\"><h3 class=\"sd-title\">Compartelo:<\/h3><div class=\"sd-content\"><ul><li class=\"share-facebook\"><a rel=\"nofollow noopener noreferrer\" data-shared=\"sharing-facebook-76\" class=\"share-facebook sd-button share-icon\" href=\"https:\/\/www.latindevelopers.com\/ivancp\/2006\/02\/mysql-desde-cpp\/?share=facebook\" target=\"_blank\" title=\"Haz clic para compartir en Facebook\"><span>Facebook<\/span><\/a><\/li><li class=\"share-twitter\"><a rel=\"nofollow noopener noreferrer\" data-shared=\"sharing-twitter-76\" class=\"share-twitter sd-button share-icon\" href=\"https:\/\/www.latindevelopers.com\/ivancp\/2006\/02\/mysql-desde-cpp\/?share=twitter\" target=\"_blank\" title=\"Haz clic para compartir en Twitter\"><span>Twitter<\/span><\/a><\/li><li><a href=\"#\" class=\"sharing-anchor sd-button share-more\"><span>M\u00e1s<\/span><\/a><\/li><li class=\"share-end\"><\/li><\/ul><div class=\"sharing-hidden\"><div class=\"inner\" style=\"display: none;\"><ul><li class=\"share-email\"><a rel=\"nofollow noopener noreferrer\" data-shared=\"\" class=\"share-email sd-button share-icon\" href=\"https:\/\/www.latindevelopers.com\/ivancp\/2006\/02\/mysql-desde-cpp\/?share=email\" target=\"_blank\" title=\"Haz clic para enviar por correo electr\u00f3nico a un amigo\"><span>Correo electr\u00f3nico<\/span><\/a><\/li><li class=\"share-print\"><a rel=\"nofollow noopener noreferrer\" data-shared=\"\" class=\"share-print sd-button share-icon\" href=\"https:\/\/www.latindevelopers.com\/ivancp\/2006\/02\/mysql-desde-cpp\/\" target=\"_blank\" title=\"Haz clic para imprimir\"><span>Imprimir<\/span><\/a><\/li><li class=\"share-end\"><\/li><li class=\"share-linkedin\"><a rel=\"nofollow noopener noreferrer\" data-shared=\"sharing-linkedin-76\" class=\"share-linkedin sd-button share-icon\" href=\"https:\/\/www.latindevelopers.com\/ivancp\/2006\/02\/mysql-desde-cpp\/?share=linkedin\" target=\"_blank\" title=\"Haz clic para compartir en LinkedIn\"><span>LinkedIn<\/span><\/a><\/li><li class=\"share-end\"><\/li><\/ul><\/div><\/div><\/div><\/div><\/div>","protected":false},"author":1,"featured_media":476,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"spay_email":""},"categories":[7,10],"tags":[16,12],"jetpack_featured_media_url":"https:\/\/www.latindevelopers.com\/ivancp\/wp-content\/uploads\/cpp_logo.jpg","jetpack_shortlink":"https:\/\/wp.me\/p1tEO5-1e","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.latindevelopers.com\/ivancp\/wp-json\/wp\/v2\/posts\/76"}],"collection":[{"href":"https:\/\/www.latindevelopers.com\/ivancp\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.latindevelopers.com\/ivancp\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.latindevelopers.com\/ivancp\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.latindevelopers.com\/ivancp\/wp-json\/wp\/v2\/comments?post=76"}],"version-history":[{"count":6,"href":"https:\/\/www.latindevelopers.com\/ivancp\/wp-json\/wp\/v2\/posts\/76\/revisions"}],"predecessor-version":[{"id":307,"href":"https:\/\/www.latindevelopers.com\/ivancp\/wp-json\/wp\/v2\/posts\/76\/revisions\/307"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.latindevelopers.com\/ivancp\/wp-json\/wp\/v2\/media\/476"}],"wp:attachment":[{"href":"https:\/\/www.latindevelopers.com\/ivancp\/wp-json\/wp\/v2\/media?parent=76"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.latindevelopers.com\/ivancp\/wp-json\/wp\/v2\/categories?post=76"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.latindevelopers.com\/ivancp\/wp-json\/wp\/v2\/tags?post=76"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}