<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ca">
	<id>http://wiki.joanillo.org/index.php?action=history&amp;feed=atom&amp;title=L%27API_de_C_de_MySQL</id>
	<title>L'API de C de MySQL - Historial de revisió</title>
	<link rel="self" type="application/atom+xml" href="http://wiki.joanillo.org/index.php?action=history&amp;feed=atom&amp;title=L%27API_de_C_de_MySQL"/>
	<link rel="alternate" type="text/html" href="http://wiki.joanillo.org/index.php?title=L%27API_de_C_de_MySQL&amp;action=history"/>
	<updated>2026-08-30T09:20:41Z</updated>
	<subtitle>Historial de revisió per a aquesta pàgina del wiki</subtitle>
	<generator>MediaWiki 1.34.2</generator>
	<entry>
		<id>http://wiki.joanillo.org/index.php?title=L%27API_de_C_de_MySQL&amp;diff=250561&amp;oldid=prev</id>
		<title>Joan a 12:42, 12 juny 2013</title>
		<link rel="alternate" type="text/html" href="http://wiki.joanillo.org/index.php?title=L%27API_de_C_de_MySQL&amp;diff=250561&amp;oldid=prev"/>
		<updated>2013-06-12T12:42:12Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Pàgina nova&lt;/b&gt;&lt;/p&gt;&lt;div&gt;__TOC__&lt;br /&gt;
=Exemple lenguatge C=&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sudo apt-get install libmysqlclient-dev&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
referència de les funcions:&lt;br /&gt;
*http://dev.mysql.com/doc/refman/5.0/en/c-api-functions.html&lt;br /&gt;
&lt;br /&gt;
*http://www.dscripts.net/2010/06/11/how-to-connect-to-mysql-database-using-ansi-c-language/&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ gcc mysqltest.c -o mysqltest -lmysqlclient&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//http://www.dscripts.net/2010/06/11/how-to-connect-to-mysql-database-using-ansi-c-language/&lt;br /&gt;
//gcc mysqltest.c -o mysqltest -lmysqlclient&lt;br /&gt;
//??? //paquets necessaris: libmysqlclient-dev,libmysqld-dev. I també libwrap0-dev&lt;br /&gt;
&lt;br /&gt;
#include&amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include&amp;lt;mysql/mysql.h&amp;gt;&lt;br /&gt;
#include&amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
int main(int argc, char *argv[])&lt;br /&gt;
{&lt;br /&gt;
    MYSQL *conn;&lt;br /&gt;
    MYSQL_RES *res;&lt;br /&gt;
    MYSQL_ROW row;&lt;br /&gt;
 &lt;br /&gt;
    char *server =&amp;quot;localhost&amp;quot;;&lt;br /&gt;
    char *user = &amp;quot;root&amp;quot;;&lt;br /&gt;
    char *password = &amp;quot;isistot09&amp;quot;;&lt;br /&gt;
    char *database = &amp;quot;openbravopos&amp;quot;;&lt;br /&gt;
 &lt;br /&gt;
    conn = mysql_init(NULL);&lt;br /&gt;
 &lt;br /&gt;
    // Connect to database&lt;br /&gt;
    if(!mysql_real_connect(conn, server, user, password, database, 0, NULL, 0))&lt;br /&gt;
    {&lt;br /&gt;
        fprintf(stderr, &amp;quot;%s\n&amp;quot;, mysql_error(conn));&lt;br /&gt;
        exit(1);&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    // sql query&lt;br /&gt;
    if(mysql_query(conn, &amp;quot;select * from PEOPLE&amp;quot;))&lt;br /&gt;
    {&lt;br /&gt;
        fprintf(stderr, &amp;quot;%s\n&amp;quot;, mysql_error(conn));&lt;br /&gt;
        exit(1);&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    res = mysql_use_result(conn);&lt;br /&gt;
 &lt;br /&gt;
    //output table name&lt;br /&gt;
    printf(&amp;quot;Mysql Tables in mysql database: \n&amp;quot;);&lt;br /&gt;
    while((row = mysql_fetch_row(res)) !=NULL)&lt;br /&gt;
        printf(&amp;quot;%-3s%-30s%-30s\n&amp;quot;, row[0], row[1], row[2]);&lt;br /&gt;
&lt;br /&gt;
    //inserir una fila&lt;br /&gt;
    if(mysql_query(conn, &amp;quot;INSERT INTO PEOPLE(ID, NAME, ROLE) VALUES(4,'Joan',0)&amp;quot;))&lt;br /&gt;
    {&lt;br /&gt;
        fprintf(stderr, &amp;quot;%s\n&amp;quot;, mysql_error(conn));&lt;br /&gt;
        exit(1);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // close connection&lt;br /&gt;
    mysql_free_result(res);&lt;br /&gt;
    mysql_close(conn);&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Exemple llenguatge C++=&lt;br /&gt;
*http://www.yolinux.com/TUTORIALS/MySQL-Programming-C-API.html#INSERT_SELECT&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
g++ -o testMySqlAPI testMySqlAPI.cpp `mysql_config --cflags` `mysql_config --libs`&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//http://www.yolinux.com/TUTORIALS/MySQL-Programming-C-API.html#INSERT_SELECT&lt;br /&gt;
//g++ -o testMySqlAPI testMySqlAPI.cpp `mysql_config --cflags` `mysql_config --libs`&lt;br /&gt;
/*&lt;br /&gt;
CREATE DATABASE bedrock;&lt;br /&gt;
USE bedrock;&lt;br /&gt;
CREATE TABLE employee (IDpk integer  NOT NULL auto_increment,&lt;br /&gt;
                       Employee_Name char(20),&lt;br /&gt;
                       Dept char(20),&lt;br /&gt;
                       JobTitle char(20),&lt;br /&gt;
                       PRIMARY KEY (IDpk));&lt;br /&gt;
INSERT INTO employee (Employee_Name,Dept,JobTitle) VALUES ('Fred Flinstone','Worker','Rock Digger');&lt;br /&gt;
INSERT INTO employee (Employee_Name,Dept,JobTitle) VALUES ('Wilma Flinstone','Finance','Analyst');&lt;br /&gt;
INSERT into employee (Employee_Name,Dept,JobTitle) VALUES ('Barney Rubble','Sales','Neighbor');&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include &amp;lt;mysql.h&amp;gt;&lt;br /&gt;
#include &amp;lt;string&amp;gt;&lt;br /&gt;
&lt;br /&gt;
class FFError&lt;br /&gt;
{&lt;br /&gt;
public:&lt;br /&gt;
    std::string    Label;&lt;br /&gt;
&lt;br /&gt;
    FFError( ) { Label = (char *)&amp;quot;Generic Error&amp;quot;; }&lt;br /&gt;
    FFError( char *message ) { Label = message; }&lt;br /&gt;
    ~FFError() { }&lt;br /&gt;
    inline const char*   GetMessage  ( void )   { return Label.c_str(); }&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
using namespace std;&lt;br /&gt;
&lt;br /&gt;
main()&lt;br /&gt;
{&lt;br /&gt;
    // --------------------------------------------------------------------&lt;br /&gt;
    // Connect to the database&lt;br /&gt;
    &lt;br /&gt;
    MYSQL      *MySQLConRet;&lt;br /&gt;
    MYSQL      *MySQLConnection = NULL;&lt;br /&gt;
&lt;br /&gt;
    string hostName = &amp;quot;localhost&amp;quot;;&lt;br /&gt;
    string userId   = &amp;quot;root&amp;quot;;&lt;br /&gt;
    string password = &amp;quot;isistot09&amp;quot;;&lt;br /&gt;
    string DB       = &amp;quot;bedrock&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
    MySQLConnection = mysql_init( NULL );&lt;br /&gt;
&lt;br /&gt;
    try&lt;br /&gt;
    {&lt;br /&gt;
        MySQLConRet = mysql_real_connect( MySQLConnection,&lt;br /&gt;
                                          hostName.c_str(), &lt;br /&gt;
                                          userId.c_str(), &lt;br /&gt;
                                          password.c_str(), &lt;br /&gt;
                                          DB.c_str(), &lt;br /&gt;
                                          0, &lt;br /&gt;
                                          NULL,&lt;br /&gt;
                                          0 );&lt;br /&gt;
&lt;br /&gt;
        if ( MySQLConRet == NULL )&lt;br /&gt;
            throw FFError( (char*) mysql_error(MySQLConnection) );&lt;br /&gt;
   &lt;br /&gt;
        printf(&amp;quot;MySQL Connection Info: %s \n&amp;quot;, mysql_get_host_info(MySQLConnection));&lt;br /&gt;
        printf(&amp;quot;MySQL Client Info: %s \n&amp;quot;, mysql_get_client_info());&lt;br /&gt;
        printf(&amp;quot;MySQL Server Info: %s \n&amp;quot;, mysql_get_server_info(MySQLConnection));&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
    catch ( FFError e )&lt;br /&gt;
    {&lt;br /&gt;
        printf(&amp;quot;%s\n&amp;quot;,e.Label.c_str());&lt;br /&gt;
        return 1;&lt;br /&gt;
    }&lt;br /&gt;
      &lt;br /&gt;
    int             mysqlStatus = 0;&lt;br /&gt;
    MYSQL_RES      *mysqlResult = NULL;&lt;br /&gt;
&lt;br /&gt;
    // --------------------------------------------------------------------&lt;br /&gt;
    // This block of code would be performed if this insert were in a loop &lt;br /&gt;
    // with changing data. Of course it is not necessary in this example.&lt;br /&gt;
&lt;br /&gt;
    if(mysqlResult)&lt;br /&gt;
    {&lt;br /&gt;
        mysql_free_result(mysqlResult);&lt;br /&gt;
        mysqlResult = NULL;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // --------------------------------------------------------------------&lt;br /&gt;
    // Perform a SQL INSERT&lt;br /&gt;
&lt;br /&gt;
    try&lt;br /&gt;
    {&lt;br /&gt;
        string sqlInsStatement = &amp;quot;INSERT INTO employee (Employee_Name,Dept,JobTitle) VALUES ('Betty Rubble','IT','Neighbor')&amp;quot;;&lt;br /&gt;
        mysqlStatus = mysql_query( MySQLConnection, sqlInsStatement.c_str() );&lt;br /&gt;
        if (mysqlStatus)&lt;br /&gt;
        {&lt;br /&gt;
            throw FFError( (char*)mysql_error(MySQLConnection) );&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    catch ( FFError e )&lt;br /&gt;
    {&lt;br /&gt;
        printf(&amp;quot;%s\n&amp;quot;,e.Label.c_str());&lt;br /&gt;
        mysql_close(MySQLConnection);&lt;br /&gt;
        return 1;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    if(mysqlResult)&lt;br /&gt;
    {&lt;br /&gt;
        mysql_free_result(mysqlResult);&lt;br /&gt;
        mysqlResult = NULL;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    // --------------------------------------------------------------------&lt;br /&gt;
    // Perform a SQL SELECT and retrieve data&lt;br /&gt;
&lt;br /&gt;
    MYSQL_ROW       mysqlRow;&lt;br /&gt;
    MYSQL_FIELD    *mysqlFields;&lt;br /&gt;
    my_ulonglong    numRows;&lt;br /&gt;
    unsigned int    numFields;&lt;br /&gt;
    &lt;br /&gt;
    try&lt;br /&gt;
    {&lt;br /&gt;
        string sqlSelStatement = &amp;quot;SELECT * FROM employee&amp;quot;;&lt;br /&gt;
        mysqlStatus = mysql_query( MySQLConnection, sqlSelStatement.c_str() );&lt;br /&gt;
&lt;br /&gt;
        if (mysqlStatus)&lt;br /&gt;
            throw FFError( (char*)mysql_error(MySQLConnection) );&lt;br /&gt;
        else&lt;br /&gt;
            mysqlResult = mysql_store_result(MySQLConnection); // Get the Result Set&lt;br /&gt;
&lt;br /&gt;
        if (mysqlResult)  // there are rows&lt;br /&gt;
        {&lt;br /&gt;
            // # of rows in the result set&lt;br /&gt;
            numRows = mysql_num_rows(mysqlResult);&lt;br /&gt;
&lt;br /&gt;
            // # of Columns (mFields) in the latest results set&lt;br /&gt;
            numFields = mysql_field_count(MySQLConnection);&lt;br /&gt;
&lt;br /&gt;
            // Returns the number of columns in a result set specified&lt;br /&gt;
            numFields = mysql_num_fields(mysqlResult);&lt;br /&gt;
&lt;br /&gt;
            printf(&amp;quot;Number of rows=%u  Number of fields=%u \n&amp;quot;,numRows,numFields);&lt;br /&gt;
        }&lt;br /&gt;
        else&lt;br /&gt;
        {&lt;br /&gt;
           printf(&amp;quot;Result set is empty&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
    &lt;br /&gt;
        // Print column headers&lt;br /&gt;
&lt;br /&gt;
        mysqlFields = mysql_fetch_fields(mysqlResult);&lt;br /&gt;
&lt;br /&gt;
        for(int jj=0; jj &amp;lt; numFields; jj++)&lt;br /&gt;
        {&lt;br /&gt;
            printf(&amp;quot;%s\t&amp;quot;,mysqlFields[jj].name);&lt;br /&gt;
        }&lt;br /&gt;
        printf(&amp;quot;\n&amp;quot;);&lt;br /&gt;
     &lt;br /&gt;
        // print query results&lt;br /&gt;
&lt;br /&gt;
        while(mysqlRow = mysql_fetch_row(mysqlResult)) // row pointer in the result set&lt;br /&gt;
        {&lt;br /&gt;
            for(int ii=0; ii &amp;lt; numFields; ii++)&lt;br /&gt;
            {&lt;br /&gt;
                printf(&amp;quot;%s\t&amp;quot;, mysqlRow[ii] ? mysqlRow[ii] : &amp;quot;NULL&amp;quot;);  // Not NULL then print&lt;br /&gt;
            }&lt;br /&gt;
            printf(&amp;quot;\n&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        if(mysqlResult)&lt;br /&gt;
        {&lt;br /&gt;
            mysql_free_result(mysqlResult);&lt;br /&gt;
            mysqlResult = NULL;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    catch ( FFError e )&lt;br /&gt;
    {&lt;br /&gt;
        printf(&amp;quot;%s\n&amp;quot;,e.Label.c_str());&lt;br /&gt;
        mysql_close(MySQLConnection);&lt;br /&gt;
        return 1;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // --------------------------------------------------------------------&lt;br /&gt;
    // Close datbase connection&lt;br /&gt;
&lt;br /&gt;
    mysql_close(MySQLConnection);&lt;br /&gt;
&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Incloure el servidor MySQL en el programa C=&lt;br /&gt;
*http://dev.mysql.com/tech-resources/articles/embedding-mysql-server.html&lt;br /&gt;
=Utilitzar un cursor navegable: endavant i endarrere=&lt;br /&gt;
Això és el que he utilitzat en l'aplicatiu '''presentaciosdl''' d'arthropoda, per fer una mena de presentació powerpoint d'insectes que accedeix directament a la base de dades.&lt;br /&gt;
{{Autor}}, juny 2011&lt;/div&gt;</summary>
		<author><name>Joan</name></author>
		
	</entry>
</feed>