Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

[Delphi] mySQLDirectQuery1 - problem ze zwróceniem wyniku zapytania SQL


Rekomendowane odpowiedzi

Opublikowano

Nawiązując do poprzedniego tematu chciałbym rozwiązać kolejną (mam nadzieję, że ostatnią) kwestię obsługi baz danych z poziomu Delphi.

 

http://www.mpcforum.pl/topic/934219-delphi-inicjacja-poczenia-z-mysql/

 

Problem, z którym teraz się borykam jest następujący, otóż nawiązane połączenie z bazą jest i generalnie zapytania SQL typu

 

UPDATE `tabela` SET `kolumna`="wartosc";

wykonują się bezbłędnie. Problemem jest to, że po wykonaniu zapytań MySQL program zgłasza mi taki komunikat:

 

 

mySQLDirectQuery1 - SQL query executed successfuly but it did not return resultset

Próbowałem rozbić zapytania na jeszcze mniejsze, ale niestety nic to nie dało.

 

Tutaj jest fragment kodu, może w nim coś nie tak jest:

 

mySQLDirectQuery1.SQL.Clear;
mySQLDirectQuery1.Active := false;
mySQLDirectQuery1.SQL.Text := Memo1.Text;
    try
      mySQLDirectQuery1.Active := true;
      ShowMessage('Zapytania SQL wykonane poprawnie');
    except
      on E: Exception do ShowMessage(E.Message);
    end;
    ShowMessage('Nie wszystkie zapytania mogly zostac wykonane');
end;

59649524317135950350.png

Opublikowano

Nie umiem sie znać na delphi, ale z tych tutoriali, co ci wysłałem to powinno być:

 

 


 

mySQLDirectQuery1.Active := false;
mySQLDirectQuery1.SQL.Clear;
mySQLDirectQuery1.SQL.Text := Memo1.Text;
    try
      mySQLDirectQuery1.Active := true;
      ShowMessage('Zapytania SQL wykonane poprawnie');
    except
      on E: Exception do ShowMessage(E.Message);
    end;
    ShowMessage('Nie wszystkie zapytania mogly zostac wykonane');
end;
G8loSX2.png
Opublikowano

Szperając po googlach znalazłem ciekawą informację, że dyrektywy:

 

INSERT, DELETE, ALTER TABLE, UPDATE
MySQL'a nie są zapytaniami O_o

 

Jedyna dyrektywa który może i zwraca resultat zapytania to dyrektywa

 

SELECT
.

 

Sprawdzałem jeszcze kontrolkę TMySQLUpdateSQL, ale za licho nie wiem "z której strony ją podejść" :P

Z dokumentacji wynika, że to właśnie jej trzeba użyć, jeśli chcę zmieniać rekordy w tabelach. Ufff.

59649524317135950350.png

Opublikowano

Szczerze nic mi to nie dało, ale może z czasem jakoś to ogarnę :)

Najważniejsze założenie programu działa - modyfikacja rekordów za pomocą podanych parametrów :)

@Approx, my chyba będziemy musieli więcej pogadać xD

59649524317135950350.png

Opublikowano

No i ogarnąłem, rozwiązanie miałem tuż pod nosem xD

zamiast używać

 

MySQLQuery1.Active := true;

 

użyłem

 

MySQLQuery1.ExecSQL;

 

Zapytania się wykonują wszystkie i nie otrzymuję irytujących komunikatów, Ha!

59649524317135950350.png

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...