mysql update



  • Wie krieg ich denn von einer SQL Abfrage einen Rückgabewert?



  • Hilfe von dem Anschauen ? -> SQLQuery1->ExecSQL()



  • super wenn ich das so mache:

    AnsiString zurueck = SQLQuery1->ExecSQL() ;
    

    dann bekomme ich entweder 0 oder 1 zurück! das bringt mir glaube ich nicht so viel.



  • Also ich hab das jetzt so gemacht wie junix das gesagt hat nur die Sache ist nun das die AffectedRows immer 0 sind, weiß auch nicht.

    Mein Code:

    SQLQuery1->SQL->Clear() ;
    SQLQuery1->Active=false;
    ClientDataSet1->Active=false;
    
    SQLQuery1->SQL->Clear() ;
    SQLQuery1->Active=false;
    SQLQuery1->SQL->Add("UPDATE search SET url = ' " + Label1->Caption  + " ' , title = ' " + Title + "' , description = ' " + MEdit1->Text + 
                        "', keywords = '" + MEdit2->Text  + "' ,author = '" + MEdit3->Text + "' ,publisher = '" + MEdit4->Text + 
                        "' ,copyright = '" + MEdit5->Text + "', pagetopic = '" + MEdit6->Text + "',contentlanguage = '" + MEdit7->Text +   
                        " '  WHERE url = ' " + Label1->Caption + "' ");
    
    SQLQuery1->ExecSQL() ;
    int rows = SQLQuery1->RowsAffected;
    
    if (rows == 0)
    {
    }
    else
    {
      SQLQuery1->SQL->Clear() ;
      SQLQuery1->Active=false;
      SQLQuery1->SQL->Add("insert into search (url,title,description,keywords,author,publisher,copyright,pagetopic,contentlanguage) values ('" + 
                          Label1->Caption + "', '" + Title + "', '" + MEdit1->Text + "', '" + MEdit2->Text + "', '" + MEdit3->Text + "', '" + 
                          MEdit4->Text + "', '" + MEdit5->Text + "', '" + MEdit6->Text+ "', '" + MEdit7->Text + "')");
    
      SQLQuery1->ExecSQL();
    }
    

    Ist da irgendwas drin falsch?

    Edit:
    Bitte auf sinnvolle Zeilenumbrüche achten. Danke!

    [ Dieser Beitrag wurde am 09.07.2003 um 13:18 Uhr von Jansen editiert. ]



  • BCC-Hilfe für TSQLQuery::ExecSQL

    Hinweis: Verwenden Sie ExecSQL nicht für Anweisungen, die Daten zurückgeben. Wenn eine Anweisung Daten zurückgibt, rufen Sie die Methode Open auf, oder setzen Sie die Eigenschaft Active auf true



  • oh man seid ihr so dumm oder tut ihr nur so ... also

    1. UpdateStatement in die SQL

    Hinweis aus der Hilfe : ExecSQL gibt die Anzahl der Datensätze zurück, auf die mit der letzten Anweisung zugegriffen wurde. Dieser Wert wird auch der Eigenschaft RowsAffected zugewiesen.

    2. If ( SQLQuery->ExecSQL() == 0 )
    Insert Statement

    is das nun so schwer gewesen.

    Hinweis: Verwenden Sie ExecSQL nicht für Anweisungen, die Daten zurückgeben. Wenn eine Anweisung Daten zurückgibt, rufen Sie die Methode Open auf, oder setzen Sie die Eigenschaft Active auf true

    jo das stimmt ja schon aber das gibt keine daten zurück sondern is nen Aktualisier Statement ...

    Daten zurückgeben tut z.B. select

    😡 😮 🙄



  • super, das hab ich nun auch gemacht aber ich bekomme als rückgabewert immer 0 zurück! irgendwie scheint der das update nicht zu machen.
    ich raffe nur nicht wieso.



  • set url where url <-- ist eigentlich das set url unnötig

    ... oO wenn du ne existierende url nimmst wirds wohl schon gehen .. 🙄

    [ Dieser Beitrag wurde am 09.07.2003 um 13:45 Uhr von 1ntrud0r editiert. ]



  • hmm, komisch ich kann auch keinen fehler in der syntax entdecken...



  • hey, es geht jetzt!!! ich weiss nur nicht wo dran es lag.

    danke an alle!


Anmelden zum Antworten