![]() |
Re: Überprüfen ob Spalte existiert
So, jetzt habe ich mal für dich kurz in die Dokumentation geschaut wie man das in SQLite machen sollte... :roll:
![]() Über PRAGMA table_info(table-name); bekommst du die Infos frei Haus geliefert welche Spalten vorhanden sind usw. Und für die Infos zu den vorhandenen Tabellen gibts SQLITE_MASTER, wie in den FAQ sogar leicht zu finden ist: ![]() |
Re: Überprüfen ob Spalte existiert
Hallo,
Open/Close kommt von der Query. Nach dem Open kommt dann z.B.
Delphi-Quellcode:
function FieldExists(theDataSet: TDataSet; const theFieldName: String): Boolean;
var iFieldIndex: Integer; begin Result:= False; for iFieldIndex:=0 to theDataSet.FieldCount-1 do begin if CompareText(theDataSet.Fields[iFieldIndex].FieldName,theFieldName)=0 then begin Result:= True; Exit; end; end; end; { FieldExists } Heiko |
Re: Überprüfen ob Spalte existiert
Naja,
ich habe es jetzt über den SQLITE_MASTER gelöst:
Delphi-Quellcode:
MfG
function TDatenbankWrapper.ColumnExists(const ATableName, AColumnName: string;
const AWrapper: TDatenbankWrapper): Boolean; var BufferTable : TSQLiteTable; TableDesc, ColumnName : string; Offset, NameEnd : Integer; begin Result := false; BufferTable := GetTable('SELECT sql FROM SQLITE_MASTER WHERE name = "' + ATableName + '"', AWrapper); try TableDesc := BufferTable.FieldAsString(0); Offset := Pos('(', TableDesc); while (Offset > 0) or (not Result) do begin // Ignoring leading spaces while TableDesc[Offset + 1] = ' ' do Inc(Offset); NameEnd := PosEx(' ', TableDesc, Offset + 1); if NameEnd = 0 then NameEnd := Pos(')', TableDesc); ColumnName := Copy(TableDesc, Offset + 1, NameEnd - Offset - 1); if ColumnName = AColumnName then Result := true; Offset := PosEx(',', TableDesc, Offset + 1); end; finally BufferTable.Free; end; end; xZise |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:44 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz