MySQL w Delphi

ZE
  • Rejestracja: dni
  • Ostatnio: dni
0

Mam problem z MySQL w Delphi.
Mianowicie jak mógłbym zrobić by dane które są zapisywane do tabeli były zapisywane tylko raz?
Chodzi mi o to że mam np. Edit1 i po kliknięciu na button1 zawartość Edit1.Text jest wprowadzana do jakiejś tabeli w bazie danych MySQL lecz to nie jest problemem. Problem stanowi pojedyńczy zapis czyli tak by dwa razy w bazie danych nie mogły znaleŹć się identyczne rekordy...
Jak tego dokonać?

  • Rejestracja: dni
  • Ostatnio: dni
0

Na przykład sprawdzać czy w bazie już znajduje się taki rekord?
Powinien wystarczyć prosty SELECT

Pzdr.

ZE
  • Rejestracja: dni
  • Ostatnio: dni
0

No dobrze a jak mam np takie coś:

Kopiuj
SQLQuery := Format('INSERT INTO baza SET tresc="%s"', [Edit1.Text]);

To jak do czegoś takiego dodać SELECT tak by sprawdzało czy pozycja już istnieje i jak istnieje by nic nie robiło a jak nie by wstawiło dane do bazy?

No już 40 osób odwiedziło ten temat... Proszę o jakąś pomoc...

M2
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 4
0

O ja też właśnie tego potrzebuj. Zna ktoś odp?

ZE
  • Rejestracja: dni
  • Ostatnio: dni
0

heh a już myślałem że ktoś mi odpowiedział :D

  • Rejestracja: dni
  • Ostatnio: dni
0

SELECT count(*) FROM baza WHERE Tresc='nowa tresc'
Oczywiście 'nowa tresc' to wartosc, ktora chcesz wrzucic do bazy. Pobierasz wynik tego zapytania i sprawdzasz czy jest > 0. Jeśli tak to znaczy, że już jest w bazie, jeśli nie to dodajesz.

Pzdr.

Loloki
  • Rejestracja: dni
  • Ostatnio: dni
0

Albo pole tresc ustawiasz na unique i baza sama sprawdzi czy takie coś już nie zostało wpisane. Przy próbie ponownego dodania wypluje wyjątek/błąd zależy przez co się łączysz.

ZE
  • Rejestracja: dni
  • Ostatnio: dni
0

Ustawiłem UNIQUE lecz w związku z tym mam pytanie czy można jakoś zmienić treść wyskakującego komunikatu gdy klucz już istnieje?

  • Rejestracja: dni
  • Ostatnio: dni
0
Zeelof napisał(a)

Ustawiłem UNIQUE lecz w związku z tym mam pytanie czy można jakoś zmienić treść wyskakującego komunikatu gdy klucz już istnieje?

http://4programmers.net/Delphi/Artyku%C5%82y/Wyj%C4%85tki
i/lub
http://4programmers.net/Delphi/Kompendium/Rozdzia%C5%82_3#id-Wyj%C4%85tki

Pzdr.

ikari
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 381
0

Zamiast INSERT INTO robcie REPLACE INTO

To dziala tak:

  • jesli wartosc juz jest (MySQL patrzy na klucz glowny tabeli, np. pole ID), to ją zedytuje
  • jesli jej nie ma, doda nowy rekord

To cos pomiedzy insert, a update ;)

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.