Ich bin neu in iOS-Entwicklung. Ich versuche eine einfache Todo-Liste App zu machen. Ich benutze Xocde 8 und Ziel-C-Sprache. Ich habe mehrere Tutorials ausprobiert, konnte aber die Datenbanktabelle nicht erstellen. Hier ist mein Code.kann keine Datenbanktabelle erstellen und in iOS einfügen sqlite3
-(void)createOrOpenDB{
printf("createOrOpenDB: into this function \n");
NSArray *docsDir = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *dirPaths = [docsDir objectAtIndex:0];
dbPathString = [[NSString alloc] initWithString: [dirPaths stringByAppendingPathComponent:@"person.db"]];
NSFileManager *fileManager = [NSFileManager defaultManager];
char *err;
printf("createOrOpenDB: into this function before if statement \n");
if(![fileManager fileExistsAtPath:dbPathString]){
const char *dbPath = [dbPathString UTF8String];
printf("createOrOpenDB: into this functions 1st if statement \n");
//create db here
if(sqlite3_open(dbPath, &personDB) ==SQLITE_OK){
const char *sql_stnt = "CREATE TABLE IF NOT EXISTS PERSONS (ID INTEGER PRIMARY KEY AUTOINCREMENT, NAME TEXT, AGE INTEGER)";
if(sqlite3_exec(personDB, sql_stnt, NULL, NULL, &err) !=SQLITE_OK){
printf("Failed to create table\n");
}
sqlite3_close(personDB);
printf("createOrOpenDB: database table created\n");
}
}
}
, wenn ich die Add-Taste drücken, das gibt mir keine Fehler. aber es fügt keine Daten hinzu. NSLog in xcode 8 nicht funktioniert. also habe ich stattdessen printf gemacht. und mein Code bricht vor der if-Anweisung. kann mir jemand sagen, was ich falsch mache?
Dies erstellt Tabelle, wenn die Datenbank nicht existiert. Aber was ist, wenn die Datenbank existiert, aber die Tabelle nicht existiert (z. B. hatten Sie vielleicht eine frühere Version, die diese 'create table' Logik nicht hatte)? Ich würde in den Dokumentenordner schauen und sehen, ob dort eine Datenbank ist oder nicht. Wenn ja, würde ich es löschen und es erneut versuchen. – Rob
das ist richtig. Mein Tisch wurde bereits erstellt. Aber das Problem ist, wenn ich die Schaltfläche "Hinzufügen" drücke, fügt es nichts in die Datenbank ein. –