2015-06-18 13 views
5

hinzufügen Ich versuche, eine Spalte in einer Tabelle mit swift hinzuzufügen.wie man Spalte in einer SQLite Tabelle in SWIFT

mein Code:

connect_db(); 
    adddbfield("mynewfield","mytable"); 

.

func connect_db() -> Bool { 
    let sDBPath=<is correctly set>; 
    if sqlite3_open(sDBPath, &db) != SQLITE_OK { 
     println("Failed to open db") 
     return false; 
    }else{ 
     return true; 
    } 
} 

.

func adddbfield(sFieldName:String, sTable:String) -> Bool { 
    var bReturn:Bool=false; 
    var sSQL="ALTER TABLE " + sTable + " ADD COLUMN " + sFieldName + " INTEGER DEFAULT -1"; 
    var statement:COpaquePointer = nil 
    if sqlite3_prepare_v2(db, sSQL, -1, &statement, nil) != SQLITE_OK { 
     println("Failed to prepare statement") 
    }else{ 
     println("field " + sFieldName + " added to " + sTable); 
     bReturn=true; 
    } 
    return bReturn; 
} 

Mit diesem Code wird kein Feld hinzugefügt und es tritt kein Fehler auf. Irgendwelche Hilfe? (Ich möchte den systemeigenen Zugriff auf sqlite und keine zusätzliche Bibliothek verwenden)

+0

Was ist die Ausgabe, die Sie von der Konsole erhalten? Auch Sie haben nicht sqlite3_step() und sqlite3_finalize() –

Antwort

4

Sie bereiten nur die Anweisung vor und führen sie nicht aus. Sie müssen sqlite3_step() und sqlite3_finalize() Methoden aufrufen, um den Prozess abzuschließen.

func adddbfield(sFieldName:String, sTable:String) -> Bool 
{ 
    var bReturn:Bool = false; 
    var sSQL="ALTER TABLE " + sTable + " ADD COLUMN " + sFieldName + " INTEGER DEFAULT -1"; 
    var statement:COpaquePointer = nil 
    if sqlite3_prepare_v2(db, sSQL, -1, &statement, nil) != SQLITE_OK 
    { 
     println("Failed to prepare statement") 
    } 
    else 
    { 
     if sqlite3_step(statement) == SQLITE_DONE 
     { 
      println("field " + sFieldName + " added to " + sTable); 
     } 
     sqlite3_finalize(statement); 
     bReturn=true; 
    } 
    return bReturn; 
} 
+0

aufgerufen Ich habe den Schritt einfach vergessen, vielen Dank! –

+0

@mcflysoft: Mit Vergnügen. Glückliche Kodierung! –

Verwandte Themen