Seite 1 von 1
Sqlite Spalte vohanden??
Verfasst: 14. Februar 2007 07:50
von Frostie
Hallo Leute,
muß zum updaten eine neue Spalte in eine DB einfügen.
Wie macht ihr das? Also, wie fragt Ihr vorher ab ob die Spalte icht schon da ist?
Sqlite hat ja keinen show Befehl.
Danke
Matthias
Verfasst: 14. Februar 2007 08:07
von macman
Hättest Du dich schon mit SQL befasst, hättest Du dir die Frage sparen können. Sowas kommt in den SQL-Befehl, also entweder:
CREATE TABLE IF NOT EXISTS `table` ......
oder
DROP TABLE IF EXISTS `table`;
CREATE TABLE IF NOT EXISTS `table`.....
Verfasst: 14. Februar 2007 08:17
von Frostie
Hallo,
danke erst mal für die schnelle Antwort.
Ich will SPALTEN einfügen.
Nicht kpl. Tables!! Und DROP... und anschließendes CREATE.. fällt auch flach, da die Tabellen bereits gefüllt sind.
Oder funktiert der IF EXISTS auch für Spalten? (Sorry, aber da habe ich es noch nie gemacht, für ganze Tables kannte ich das schon

)
Danke
Verfasst: 14. Februar 2007 09:05
von macman
Autsch, mein Fehler, wer lesen kann ist klar im Vorteil.
Ich würde einfach die entsprechende Query absetzen und den Rückgabewert auswerten, also 'ALTER TABLE table ADD bla' und gucken was passiert

Verfasst: 17. Februar 2007 17:37
von ChMaster
servus,
nichts einfacher als das:
die <> weg lassen.
Verfasst: 17. Februar 2007 18:42
von Frostie
Schon klar,
aber siehe meinen Beitrag:
Code: Alles auswählen
Also, wie fragt Ihr vorher ab ob die Spalte nicht schon da ist?
Verfasst: 17. Februar 2007 19:13
von ChMaster
in sqlite kenne ich keine möglichkeit dies zu machen, wie es beim
ms sql geht, das wüste ich. einfach diese abfrage verwenden müsste
so in etwa funktionieren (nur ms sql)
Code: Alles auswählen
if not exists(select * from syscolumns where name = 'spaltenname')
begin
print 'existiert nicht :)'
end
go
natürlich musst du auch wissen in welcher tabelle, dazu gibt es die "im ms sql"
die sysobjects tabelle und mit ein paar kniffen und einem richtigem join geht alles
oder du protokollierst selbst mit was du für tabellen erstellst und schreibst
zu der jeweiligen tabelle die spalten mit dazu.
Verfasst: 18. Februar 2007 08:42
von Frostie
Meine Lsung dazu:
Code: Alles auswählen
QSqlTableModel *model = new QSqlTableModel(0, QSqlDatabase::database( db ) );
QSqlQuery query( QString::null, QSqlDatabase::database( db ) );
model->setTable(table_name);
if(model->fieldIndex(field_name) == -1){
QString row = "ALTER TABLE " + table_name + " ADD " + field_name + " " + field_options;
query.exec(row);
QSqlTableModel *model1 = new QSqlTableModel(0, QSqlDatabase::database( db ) );
model1->setTable(table_name);
if(model1->fieldIndex(field_name) == -1){
return false;
} else {
return true;
}
} else {
return true;
}