3 Stimmen

SQLite Daten in Objective C einfügen

Ich möchte einige Daten in mydatabase.sqlite einfügen, aber ich habe ein Problem. Es gibt keine Fehlermeldung, wenn ich Daten einfüge, aber dann öffne ich die Datenbank und kann keine Daten sehen. Es sind keine Daten vorhanden.

Dies ist die Methode addCoffee in MyClass:

if(addStmt == nil) {
    const char *sql = "insert into records(Date, Latitude, Longitude) Values(?, ?, ?)";
    if(sqlite3_prepare_v2(database, sql, -1, &addStmt, NULL) != SQLITE_OK)
        NSAssert1(0, @"Error while creating add statement. '%s'", sqlite3_errmsg(database));
}

sqlite3_bind_text(addStmt, 1, [Date UTF8String], -1, SQLITE_TRANSIENT);
sqlite3_bind_double(addStmt, 2, [Latitude doubleValue] );
sqlite3_bind_double(addStmt, 3, [Longitude doubleValue] );

if(SQLITE_DONE != sqlite3_step(addStmt))
    NSAssert1(0, @"Error while inserting data. '%s'", sqlite3_errmsg(database));
else
    //SQLite provides a method to get the last primary key inserted by using sqlite3_last_insert_rowid
    recordID = sqlite3_last_insert_rowid(database);

//Reset the add statement.
sqlite3_reset(addStmt);

Daten senden:

iDailyAppDelegate *appDelegate = (iDailyAppDelegate *)[[UIApplication sharedApplication] delegate];

//Create a MyClass Object.
MyClass *coffeeObj = [[MyClass alloc] initWithPrimaryKey:0];
coffeeObj.Date = dateInString;
NSDecimalNumber *temp = [[NSDecimalNumber alloc] initWithString:first];
coffeeObj.Latitude = temp;
NSDecimalNumber *temp2 = [[NSDecimalNumber alloc] initWithString:second];
coffeeObj.Longitude = temp2;
[temp release];
coffeeObj.isDirty = NO;
coffeeObj.isDetailViewHydrated = YES;

//Add the object
[appDelegate addCoffee:coffeeObj];

0 Stimmen

Ist es möglich, dass Sie irgendwo "BEGIN TRANSACTION" ausgeführt haben, aber kein entsprechendes "COMMIT" durchgeführt haben?

0 Stimmen

Entschuldigung, was kann ich tun, ich habe Sie nicht verstanden?

0 Stimmen

Welche Typen sind Date , Latitude y Longitude ?

1voto

Tendulkar Punkte 5560
- (void)inserting{

    database=nil;
    if (sqlite3_open([[DBAction getSqlitePath] UTF8String], &database) == SQLITE_OK){
        const char *sql = [[NSString stringWithFormat:@"insert  into SiteTable set Site_Address = '%@'",someString] UTF8String];
        sqlite3_stmt *updateStmt = nil;
        if(sqlite3_prepare_v2(database, sql, -1, &updateStmt, NULL) != SQLITE_OK)
        {
            //NSAssert1(0, @"Error while creating update statement. '%s'", sqlite3_errmsg(database));
        }
        if (SQLITE_DONE != sqlite3_step(updateStmt)){
            //NSAssert1(0, @"Error while creating database. '%s'", sqlite3_errmsg(database));
        }
        sqlite3_reset(updateStmt);
        sqlite3_finalize(updateStmt);
    }
    else{
        //NSAssert1(0, @"Error while opening database '%s'", sqlite3_errmsg(database));
    }
    sqlite3_close(database);

}

0 Stimmen

Warum verwenden Sie die Update-Anweisung anstelle der Insert-Anweisung? Außerdem habe ich diese Methode ausprobiert, aber es ist auch kein Datensatz :S

0 Stimmen

Ok, ich habe meinen Code geändert. Außerdem habe ich meine Anwendung auf dem Gerät ausgeführt. Wegen der Standortaktualisierung. Wie kann ich meine Datenbankdatei finden? Für den Simulator ist der Weg ~/Library/Application Support/iPhone Simulator/{verison}/Applications/{app id}. Aber wie kann ich meine Datenbankdatei sehen, wenn sie auf dem Gerät läuft? Ich kann diesen Pfad nicht sehen?

0 Stimmen

Ich habe es bei organizer gefunden, vielen Dank für alles

1voto

Amar Kulo Punkte 1088

Erstellen Sie ein NSLog für alle SQL-Befehle, die Sie an die Datenbank senden, und versuchen Sie dann, sie vom Terminal aus auszuführen, damit Sie alle Fehler sehen und beheben können

0 Stimmen

Es gibt nslog nach jeder Sql-Anweisung..es ist nicht geben mir keine Fehlermeldung!!

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X