Schönen Guten Morgen,
ich hatte letztens schonmal ein Posting wegen ANSI C von mir gelassen , wo mir sehr sehr sehr gut geholfen wurde.
Nun ich bin mal wieder KO im Sinne vom Verständnis von C.
Folgendes ist mein Problem:
Ich habe Datensätze aus einer MySQL DB gelesen. Mit row[7] und row[8] wird ein neuer Wert berechnet (ergebnis), der dann in Datensatz row[7] geschrieben wird (UPDATE).
Die Berechnung ist ja schonmal nicht mehr das Thema, aber ich muss nun einen String zusammenbasteln, der dann in die MySQL Updated.
Nach Berechnung von "ergebnis" wird über eine Schleife der typ double in String umgewandelt (temp), ich hoffe das geht auch so.
nun wollte ich per strcat oder ähnliches der updatestring (char str[8]) erweitern.
Leider klappt das gar nicht. Ich erhalte immer Speicherzugriffsfehler.
Es soll dann so aussehen:
UPDATE tabellenname SET spaltenname='ergebnis', spaltenname2='stringvariable', spaltenname3='doublewert'
(Als Beispiel)
Ich kompiliere unter Linux Suse 9 mit gcc.
Ich hoffe ich hab mein Problem genau genug geschildert.
Am besten wäre, wenn mir jemand helfen könnte, wie ich an meinen Update string ein Doublewert anhänge, das Zeichen ' und so weiter.
Hier ist nochmal mein Quelltest. Mittlerweile ziemlich zerpflückt und unübersichtlich, sorry
Vielen Dank,
Andreas
ich hatte letztens schonmal ein Posting wegen ANSI C von mir gelassen , wo mir sehr sehr sehr gut geholfen wurde.
Nun ich bin mal wieder KO im Sinne vom Verständnis von C.
Folgendes ist mein Problem:
Ich habe Datensätze aus einer MySQL DB gelesen. Mit row[7] und row[8] wird ein neuer Wert berechnet (ergebnis), der dann in Datensatz row[7] geschrieben wird (UPDATE).
Die Berechnung ist ja schonmal nicht mehr das Thema, aber ich muss nun einen String zusammenbasteln, der dann in die MySQL Updated.
Nach Berechnung von "ergebnis" wird über eine Schleife der typ double in String umgewandelt (temp), ich hoffe das geht auch so.
nun wollte ich per strcat oder ähnliches der updatestring (char str[8]) erweitern.
Leider klappt das gar nicht. Ich erhalte immer Speicherzugriffsfehler.
Es soll dann so aussehen:
UPDATE tabellenname SET spaltenname='ergebnis', spaltenname2='stringvariable', spaltenname3='doublewert'
(Als Beispiel)
Ich kompiliere unter Linux Suse 9 mit gcc.
Ich hoffe ich hab mein Problem genau genug geschildert.
Am besten wäre, wenn mir jemand helfen könnte, wie ich an meinen Update string ein Doublewert anhänge, das Zeichen ' und so weiter.
Hier ist nochmal mein Quelltest. Mittlerweile ziemlich zerpflückt und unübersichtlich, sorry
Code:
void testfunktion()
{
char *str[8], *query;
double ergebnis;
char temp[1024];
char b1[21];
char b2[23];
unsigned int i,j;
MYSQL_ROW row;
MYSQL_RES *res;
MYSQL_FIELD *field;
int nSize;
int nPos;
/* Jetzt die Anfrage an den Datenbankserver */
mysql_query(mysql, "SELECT * FROM user_bankkonto");
check_error();
/* Anfrage vom Server in die Struktur MYSQL_RES laden */
res = mysql_store_result(mysql);
check_error();
/* offset = 0 bedeutet auf den Anfang der Zeile setzen */
mysql_field_seek (res, 0);
/* Jetzt die Daten aus der Struktur MYSQL_RES zeilenweise
einlesen */
while ((row = mysql_fetch_row (res)) != NULL)
{
// Berechne den neuen Wert
ergebnis = (atof(row[7])/100) * ((atof(row[8])/7)+100) ;
printf(" ASDASDASD: %lf ", ergebnis); // Testausgabe
printf("\n");
sprintf(temp, "%lf", ergebnis);
for(j=strlen(temp)-1;j>0;j--)
{
if(temp[j] != '0' || temp[j] == '.')
{
temp[j+1] = '\0';
break;
}
}
printf("Result: %s\n", temp); // Testausgabe
// Zusammenstellen des neuen UpdateStrings
str[0] = "UPDATE tabellename SET spaltenname='";
// Ab hier beginnt der Misst
sscanf(str[1], "%1d", temp);
strcat(str[2], str[1]);
}
printf("Result: %s\n", str[1]);
mysql_free_result(res);
}
Vielen Dank,
Andreas