[C++ Builder] Pomimo poprawnej budowy nie wykonuje się skrypt SQL

0

Witam.
Mam następujący kod SQL który wykonuje bez błędów w C++ Builder:

AnsiString zapytanie =("UPDATE [user] SET haslo='"+nowe_haslo_text+ "' WHERE id_user=" + user_id);
Query1 ->SQL ->Clear();
Query1 ->SQL ->Add(zapytanie);
Query1 ->Active=true;
Query1 ->ExecSQL();
Query1 ->Active=false; 

Pomimo tego, że kod jest poprawny (puściłem go w MS ACCESS i poprawnie się wykonuje, nie wyrzuca też żadnych błędów przy wykonywaniu programu to nie aktualizuje danych w bazie danych. Zna ktoś może powód takiego zachowania?

0

A co z zatwierdzaniem transakcji? Transakcja musi być zatwierdzona aby zmiany zapisały się w bazie.

Jeszcze taka mała uwaga. Nie sklejaj zapytań, a używaj parametrów, bo jak będziesz sklejał zapytania tak jak to robisz narażasz się na atak sql injection.

0

A czy wiesz może jak taką transakcje zatwierdzić? Wiem, że służy do tego polecenie "commit" tylko nie wiem za bardzo jak go wcisnąć w kod buildera.

0

Jeśli masz komponent TQuery to musisz mieć do niego jeszcze TDatabase (piszę z pamięci, nie mam teraz dostępu do Buildera). Zatem warto wtedy zrobić tak:

Database->StartTransaction();

try
{
  Query->ExecSQL();
  Database->Commit;
}
catch(...)
{
  Database->Rollback();
}

A o wiele lepiej było by wywalić te cale BDE (które stwarza więcej problemów niż robi pożytku) i zainteresować się innymi komponentami.

0

Problem jest taki że korzystam z komponentów ADO i nie ma tu czegoś takiego jak TDatabase. Teraz dopiero zauważyłem że nie napisałem tego w pierwszym poście.

EDIT

Dodałem następujące rzeczy

 	Conn ->Connected=true;
			Conn ->BeginTrans();
			AnsiString zapytanie =("UPDATE [user] SET haslo='"+nowe_haslo_text+ "' WHERE id_user=" + user_id );
			Query1 ->SQL ->Clear();
			Query1 ->SQL ->Add(zapytanie);
			Query1 ->Active=true;
			Query1 ->ExecSQL();
			Query1 ->Active=false;
			Conn ->CommitTrans();
			Conn ->Connected=false;

ale nadal nie edytuje rezultatu w bazie.

1

wywal oba Query1 ->Active=

0

Bracie dziękuje Ci! Działa :D

0

Cóż, nie wiem czemu myślałem, że korzystasz z innych komponentów. Ale widzę, że się już wyjaśniło.

1 użytkowników online, w tym zalogowanych: 0, gości: 1