SQLite insert data in objective c

12,248

Solution 1

- (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);

}

Solution 2

Create NSLog for all sql commands that you send to database and then try to execute them from the terminal and you will see all errors and be able to fix them

Share:
12,248
Hacer sengul Akac
Author by

Hacer sengul Akac

Updated on June 04, 2022

Comments

  • Hacer sengul Akac
    Hacer sengul Akac almost 2 years

    I want to insert some data to mydatabase.sqlite but I have a problem. There is no error message when inserting data but then I open database and I cant see any data. There isnt any data.

    this is addCoffee method 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);
    

    sending data:

    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];