Delphi - Szöveges adatok lekérdezése és módosítása MS SQL-ben

forráskód letöltése
A MS SQL Server lehetőséget biztosít arra, hogy tetszőleges forrásból származó szöveges információt táblák oszlopaiban eltároljunk. Cikkünkben elkészítettünk egy példaprogramot, mely egyszerű adatbázis-műveletekkel képes a táblában tárolt szöveget megjeleníteni, majd miután módosítottuk, az adott tábla megfelelő cellájába elmenteni.
A példában tetszőleges MS SQL adatbázis használható, mely rendelkezik szöveges információt tároló adattáblával. Tesztelési céllal használható a TextDb adatbázis, melyet a mellékelt Run.cmd BATCH állomány lefuttatásával hozhatunk létre. Csak arra kell ügyelni, hogy a TextDB.sql parancsállomány a BATCH állománnyal azonos mappában legyen. A TextDb.sql parancsállomány 5. sorában adja meg helyesen a létrehozandó adatbázisfájlok mappájának nevét és elérési útvonalát.
A példában öt adat megadásával specifikálhatjuk azt a szöveges információt tartalmazó cellát, melynek adatát lekérdezzük, a Form-on lévő Memo kontrolban megjelenítjük, majd módosítás után visszamentjük ugyanabba a cellába.
Az információ lekéréséhez meg kell adnunk a szerveren található adatbázis nevét, az adattábla nevét, azt az oszlopnevet, mely TEXT vagy VARCHAR típusú adatot tárol, valamint az azonosító oszlop nevét - melynek értékei egyértelműen azonosítanak egy rekordot - és egy sorszámot.
A szükséges adatok megadása után a LEKÉRDEZÉS gomb segítségével megjelenítjük a tábla megfelelő rekordjában található szöveget. A szöveg lekérdezéséhez megadjuk a kapcsolat ConnectionString property-jét:
connect.ConnectionString := 'Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=' + Edit1.Text + ';Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Use Encryption for Data=False;Tag with column collation when possible=False';
A TADOCommand objektum CommandText property-jében megadjuk a SELECT utasítást:
command.CommandText := 'SELECT ' + Edit3.Text + ' FROM ' + Edit2.Text + ' WHERE ' + Edit4.Text + ' = ' + Edit5.Text;
Az ADODB egységben található _Recordset típusban kapjuk meg az eredményt, így elegendő annak első mezőjét lekérdezni, hogy a kapott karakterláncot elhelyezhessük a Memo kontrolban.
rs := command.Execute;
Memo1.Text := rs.Fields[0].Value;
Az alkalmazásban folyamatosan ellenőrizhetjük a karakterlánc méretét, valamint egy felbukkanó felirat jelzi, ha módosításokat eszközöltünk a szövegben.
A módosított szöveg mentéséhez felépítjük a CommandText karakterláncot:
command.CommandText := 'UPDATE ' + Edit2.Text + ' SET ' + Edit3.Text + ' = ''' + Memo1.Text + ''' WHERE ' + Edit4.Text + ' = ' + Edit5.Text;
Majd elvégezzük a műveletet:
command.Execute;
A szöveges információt nem kell bináris formátumban tárolnunk az adatbázisban, így sokkal egyszerűbben kinyerhető, és módosítható.