Einzelnen Beitrag anzeigen

Kratons

Registriert seit: 20. Okt 2014
Ort: Deutschland
12 Beiträge
 
FreePascal / Lazarus
 
#6

AW: SQLite: ALTER TABLE if not exists

  Alt 3. Nov 2014, 21:06
Hi, danke nochmals sir Rufo,

hier meine Lösung: (hatte deinen letzten post noch nicht gelesen..)

Code:
  dbC.Open; //Datenbank Erstellen falls nicht vorhanden.
  // erstelle Tabelle **User** falls nicht vorhanden
  dbQ.SQL.Text:='CREATE TABLE if not exists ''user'' (id varchar(36) primary key, name varchar(20) unique, pw varchar(100), rights Integer)';
  dbQ.ExecSQL; dbT.Commit;
  dbQ.Close;
  //erstelle spalte name falls nicht vorhanden
  dbQ.SQL.Text:='PRAGMA table_info (''user'')';
  dbQ.Open;
  if not dbQ.Locate('name','name',[]) then
  begin
    dbQ.SQL.Text:='ALTER TABLE user ADD COLUMN name varchar(20)';
    dbQ.ExecSQL; dbT.Commit;
    dbQ.SQL .Text:='CREATE unique INDEX iusername ON user (name)';
    dbQ.ExecSQL; dbT.Commit;
  end;
  dbQ.Close;
  //erstelle spalte pw falls nicht vorhanden
  dbQ.SQL.Text:='PRAGMA table_info (''user'')';
  dbQ.Open;
  if not dbQ.Locate('name','pw',[]) then
  begin
    dbQ.SQL.Text:='ALTER TABLE user ADD COLUMN pw varchar(100)';
    dbQ.ExecSQL; dbT.Commit;
  end;
  dbQ.Close;
  //erstelle spalte rights falls nicht vorhanden
  dbQ.SQL.Text:='PRAGMA table_info (''user'')';
  dbQ.Open;
  if not dbQ.Locate('name','rights',[]) then
  begin
    dbQ.SQL.Text:='ALTER TABLE user ADD COLUMN rights Integer';
    dbQ.ExecSQL; dbT.Commit;
  end;
  dbQ.Close;
Hoffe das hilft jenem der das selbe Problem hat.
Dieser Code produziert exakt die Tabellen die ich brauch, bzw. sorgt dafür das nei ein der spalten fehlt.

Trotzdem vieleb dan kan sir Rufo für seine hilfe.

Die Antwort: 42

Geändert von Kratons ( 3. Nov 2014 um 22:24 Uhr)
  Mit Zitat antworten Zitat