jesusjones Geschrieben 21. November 2002 Geschrieben 21. November 2002 guten morgen, kann ich in eine sql abfrage einen string einbauen? hier mal der entsprechende code //----------------Starten einer Abfrage mit dem letzten Datensatz, gespeichert in last------------------- if(0!=mysql_query(walditest,"SELECT * FROM walditest WHERE datum >= last")) { printf("Problem with the query\n"); } hierbei spreche ich mysql über die c-api an. danke für eure vorschläge, und noch nen schönen tag. hold on, bald ist we!!!:marine Zitieren
Guybrush Threepwood Geschrieben 21. November 2002 Geschrieben 21. November 2002 Also, es geht normalerweise schon, aber bei mir mußten die SQL Anweisungen bisher immer ein Wide Character String sein, aber das könnte von API zu API verschieden sein. Zitieren
jesusjones Geschrieben 21. November 2002 Autor Geschrieben 21. November 2002 Wide Character String sein was ist das? Zitieren
Guybrush Threepwood Geschrieben 21. November 2002 Geschrieben 21. November 2002 was ist das? Ein Wide Character ist im gegensatz zum "normalen" char 2 Byte groß und vereinfachen das Programmieren mit internationalen Zeichensätzen. Mit der Funktion MultiByteToWideChar() wandelst du einen char in einen wchar um und mit WideCharToMultiByte() umgekehrt. Zitieren
jesusjones Geschrieben 21. November 2002 Autor Geschrieben 21. November 2002 und welchen header binde ich dafür ein? Zitieren
Guybrush Threepwood Geschrieben 21. November 2002 Geschrieben 21. November 2002 Hier ist ne genaue Erklärung. Zitieren
jesusjones Geschrieben 21. November 2002 Autor Geschrieben 21. November 2002 erwähnte ich das es auf einer unix maschine läuft? Zitieren
Guybrush Threepwood Geschrieben 21. November 2002 Geschrieben 21. November 2002 nein, dann kannst du das nicht benutzen. Was willst du denn genau machen und wo kommst du nicht weiter? Zitieren
jesusjones Geschrieben 21. November 2002 Autor Geschrieben 21. November 2002 #include<string.h> #include<stdio.h> #include"mysql.h" int main () { MYSQL *walditest; MYSQL_RES *reswaldi; MYSQL *waldi_in; MYSQL_RES *reswaldi_in; MYSQL_ROW waldi_in_row; MYSQL_FIELD *field; my_ulonglong anz_zeilen; char abfrage[100],temp[100]; const char abfrage_template[] = "SELECT * FROM data2 WHERE datum > %s"; unsigned int i; //--------------------------------Verbinden mit walditest------------------------------------------ walditest = mysql_init(0); walditest = mysql_real_connect(walditest,"the-air","scott","tiger","walditest",0,0,0); if(walditest==0) { printf("Problem mit der Verbindung zu Walditest\n"); } if(0!=mysql_query(walditest,"SELECT datum,wert FROM data2")) { printf("Problem with the query(walditest)\n"); } //--------------------------------Verbinden mit waldi_in-------------------------------------------- waldi_in = mysql_init(0); waldi_in = mysql_real_connect(waldi_in,"the-air","scott","tiger","waldi_in",0,0,0); if(waldi_in==0) { printf("Problem mit der Verbindung zu Waldi_in\n"); } //---------------------------------Auswählen aller Datensätz in waldi_in----------------------------- if(0!=mysql_query(waldi_in,"SELECT datum,wert FROM data")) { printf("Problem with the query(waldi_in)\n"); } reswaldi_in = mysql_store_result(waldi_in); //------------Anzahl Zeilen Ergebnismenge auslesen und zum letzten Datensatz gehen-------------------- anz_zeilen = mysql_num_rows(reswaldi_in); //anzahl zeilen ergebnismenge printf ("Anzahl Zeilen: %lu\n", (unsigned long) mysql_num_rows(reswaldi_in)); //ausgabe anzahl zeilen mysql_data_seek(reswaldi_in,anz_zeilen-1); //zum letzten tupel springen waldi_in_row=mysql_fetch_row(reswaldi_in); //daten auslesen //printf("%s %s\n",waldi_in_row[0],waldi_in_row[1]); //daten ausgeben //strcpy(last,waldi_in_row[0]); //speichern des letzten datums im string last //printf("%s\n",last); //----------------Starten einer Abfrage mit dem letzten Datensatz, gespeichert in last------------------- snprintf(abfrage, sizeof abfrage, abfrage_template, waldi_in_row[0]); abfrage[sizeof abfrage-1]=0; printf("%s\n",abfrage); if(0!=mysql_query(walditest, abfrage)) { printf("Problem with the query 2\n"); } mysql_close(waldi_in); mysql_close(walditest); } hier der ganze code. problem ist: die letze abfrage funktioniert nicht. aufgabenstellung: in die quelldatenbank werden unregelmäßig daten geschrieben. mein progi wird regelmäßig aufgerufen, erkennt neue einträge und schreibt diese in die zieldatenbank. deshalb auch die datumsüberprüfung (alle einträge die neuer sind als der letzte der zieldb sollen kopiert werden). und bei dieser abfrage hakelt es schon. soweit der erste teil. hab ichs einigermaßen verständlich ausgedrückt? Zitieren
Guybrush Threepwood Geschrieben 21. November 2002 Geschrieben 21. November 2002 hab ichs einigermaßen verständlich ausgedrückt? Ja, aber ich dachte es geht allgemein um SQL Befehle in C, mit MySQL hab ich noch nie was gemacht, kann dir da also nicht weiterhelfen. Am besten wartest du mal bis Klotzkopp wieder im Forum ist, der kann dir bestimmt helfen. Gruß Guybrush Zitieren
jesusjones Geschrieben 21. November 2002 Autor Geschrieben 21. November 2002 danke für den versuch!!!!:uli Zitieren
Klotzkopp Geschrieben 21. November 2002 Geschrieben 21. November 2002 Ich nehme mal an, MYSQL_ROW ist ein #define oder typedef. Was für eins? Zitieren
jesusjones Geschrieben 22. November 2002 Autor Geschrieben 22. November 2002 kann ich pro verbindungsid ( die ich ja bei mysql_connect bekomme) nur eine abfrage starten? d.h möchte ich auf eine db zwei abfragen starten baue ich eine zweite verbindung auf? Zitieren
Klotzkopp Geschrieben 22. November 2002 Geschrieben 22. November 2002 Originally posted by jesusjones kann ich pro verbindungsid ( die ich ja bei mysql_connect bekomme) nur eine abfrage starten?Würde mich wundern, wenn das so wäre. Ist das jetzt ein neues Problem? Hat sich das alte erledigt? Zitieren
jesusjones Geschrieben 22. November 2002 Autor Geschrieben 22. November 2002 ja, ich denke. der fehler war folgender: ich hätte die db nach der ersten anfrage mit mysql_free_result(MYSQL_RES) freigeben müssen. andere frage: kann ich in einer select anweisung schon irgendwas formatieren? z.b select datum from data where datum >= 200202021546 der typ von data ist datetime, also kommts in der form in die ergebnismenge: 2002-02-02 15:45:49 kann ich das so formatieren das es in der from kommt 20020202154649 puh, ich will wochenende haben!!!!:eek: Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.