title image


Smiley Re: Schön!
Hi,



jepp erledige das ausserhalb der Schleife.



Aber jetzt poste ich einfach mal etwas Code. Vielleicht stößt ja mal wer per Suche drauf und freut sich dann über Code. Denn nichts ist nerviger als irgendwo im Netz was zu finden was zu seinem Problem passt und dann nur zu lesen "Problem gelöst...nochmals Danke an alle"



so dann will ich mal. ich hoffe ich erwische alle relevanten Stellen aus meinem Code:

Das das Insert-Statement nciht wirklich sinnvoll ist weiss ich auch ;-) Soll eher das Prinzip verdeutlichen.





#include "mysql\mysql.h"



#define HOST "localhost"

#define USER "root"

#define PASSWD ""

#define DB_NAME "test"



MYSQL *mysql = NULL; // Connection handler



MYSQL_STMT *stmt;

MYSQL_BIND bind[1];

int int_data;



mysql = mysql_init(NULL);



if(mysql == NULL)

{

printf( "Init failed...\n" );

return 1; // Init failed.

}





if(!mysql_real_connect(mysql, HOST, USER, PASSWD, DB_NAME, MYSQL_PORT, NULL, 0))

{

printf( "Connection failed...\n" );

return 1; // Connection failed.

}



if(mysql_query(mysql, "START TRANSACTION") != 0)

{

printf( "START TRANSACTION failed...\n" );

return 1;

}



#define INSERT_COMMAND "INSERT INTO test1 (Spot_nr, s1, s2, s3) VALUES( ?, 'test1', 'test2', 'test3')"



stmt = mysql_stmt_init(mysql);

if (!stmt)

{

fprintf(stderr, " mysql_stmt_init(), out of memory\n");

return 1;

}



if (mysql_stmt_prepare(stmt, INSERT_COMMAND, strlen(INSERT_COMMAND)))

{

fprintf(stderr, " mysql_stmt_prepare(), INSERT failed\n");

fprintf(stderr, " %s\n", mysql_stmt_error(stmt));

return 1;

}



int param_count= mysql_stmt_param_count(stmt);

fprintf(stdout, " total parameters in INSERT: %d\n", param_count);



/* INTEGER PARAM */

/* This is a number type, so there is no need to specify buffer_length */

bind[0].buffer_type= MYSQL_TYPE_LONG;

bind[0].buffer= (char *)&int_data;

bind[0].is_null= 0;

bind[0].length= 0;



if (mysql_stmt_bind_param(stmt, bind))

{

fprintf(stderr, " mysql_stmt_bind_param() failed\n");

fprintf(stderr, " %s\n", mysql_stmt_error(stmt));

return 1;

}





for(int_data = 0; int_data < 10; int_data++)

{

/* Execute the INSERT statement - 1*/

if (mysql_stmt_execute(stmt))

{

fprintf(stderr, " mysql_stmt_execute(), 1 failed\n");

fprintf(stderr, " %s\n", mysql_stmt_error(stmt));

return 1;

}

}



if (mysql_stmt_close(stmt))

{

fprintf(stderr, " failed while closing the statement\n");

fprintf(stderr, " %s\n", mysql_stmt_error(stmt));

return 1;

}





if(mysql_query(mysql, "COMMIT") != 0)

{

printf( "ROLLBACK failed...\n" );

return 1; // Select failed

}





mysql_close(mysql);







so viel Spaß mit dem Code.

hier steht noch mehr wie man diese "?"-Syntax mit Leben in Form von Strings füllt. ich hab oben ja nur nen int Wert eingesetzt:

http://bugs.mysql.com/bug.php?id=8367





Ich geh jetzt meine Exception Klasse für SQL weiterbasteln. Will diese "return 1" durch Exceptions ersetzen falls bei einem Statement was schief geht.





Gruß

Pfanni

geschrieben von

Login

E-Mail:
  

Passwort:
  

Beitrag anfügen

Symbol:
 
 
 
 
 
 
 
 
 
 
 
 
 

Überschrift: