Problem bei der Erstellung von "Strings"

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
klaus
Beiträge: 102
Registriert: 09.06.2003 11:32:10

Problem bei der Erstellung von "Strings"

Beitrag von klaus » 16.11.2004 17:15:12

Moin,

ich habe ein Problem beim Zugriff auf eine Datenbank und zwar gibt folgender Code

Code: Alles auswählen

...
char *query1 = "SELECT Datum,Stunde,relFeuchte20cm,Niederschlag,BenetzungStoff,Temp20cm FROM Bestandesw\
etter WHERE Standort='";
  char *query2 = "' and Datum>= '";
  char *query3 = "' and Datum<='";
  char *query4 = "' ORDER BY Datum,Stunde";

  query = (char *)malloc((strlen(query1) + strlen(query2)+ strlen(query3)+ strlen(query4) + 1)*
         sizeof(char));

  strcat(query,query1); strcat(query,Standort);
  strcat(query,query2); strcat(query,Beginn);
  strcat(query,query3); strcat(query,Ende);
  strcat(query,query4);

  if(mysql_query(conn,query)){...
folgenden Fehler:

Code: Alles auswählen

mhenze@debian:~/c_Programme$ gcc -o zwei -I /usr/include/mysql epidemRegression1.c -lmysqlclient -lz
mhenze@debian:~/c_Programme$ ./zwei
You have an error in your SQL syntax.  Check the manual that corresponds to your MySQL server version for the right syntax to use near 'd"@d"@SELECT Datum,Stunde,relFeuchte20cm,Niederschlag,Benetzu
d"@d"@SELECT Datum,Stunde,relFeuchte20cm,Niederschlag,BenetzungStoff,Temp20cm FROM Bestandeswetter WHERE Standort='Eesch' and Datum>= '2002-07-20' and Datum<='2002-07-23' ORDER BY Datum,Stunde


meines Erachtens steht vor dem gewollten Text
d"@d"


WARUM??

Tausend Dank Matthias

Benutzeravatar
Joghurt
Beiträge: 5244
Registriert: 30.01.2003 15:27:31
Wohnort: Hamburg
Kontaktdaten:

Beitrag von Joghurt » 16.11.2004 17:31:06

Beim Malloc fehlen 3 byte! (Jeder String hat länge strlen+1)
Desweiteren sollte der erste strcat ein strcpy sein, ansonsten musst du das erste Byte 0 setzen:

Code: Alles auswählen

query[0] = 0;

klaus
Beiträge: 102
Registriert: 09.06.2003 11:32:10

Tausend Dank

Beitrag von klaus » 16.11.2004 17:38:16

Moin Joghurt,

der malloc-Befehl hatte zu wenig Speicher freigemacht,
da ich die drei variablen Strings vergessen hatte.

Der Tip mit malloc hat mir sehr geholfen -> Problem geloest

Kuss Matthias

Antworten