Question

Here is my code: It works for other methods but creating an issue here only. Here I am unable to insert data... What is the problem here?Code was working earlier perfectly.

-(void) insertleadership {
[self trunleadership];
// Setup the database object
sqlite3 *database;
NSLog(@"Inside leadership");
if(sqlite3_open([databasePath UTF8String], &database) == SQLITE_OK) {
    // Setup the SQL Statement and compile it for faster access
    // NSString *query=[stringWithFormat: @"select name,password from customer where name=%@ and password=%@",*login_name,*login_pass];
    sqlite3_stmt *compiledStatement;
    for(int i=0;i<ltitle.count;i++)
    {
        // NSString *insertSQL = [NSString stringWithFormat:@"insert into category values(\'aa\',\'bb\',\'cc\',\'cc\',\'cc\')"];
        // NSLog(@"Inside leadership");
        NSString *insertSQL = [NSString stringWithFormat:@"insert into leadership values(\'%@\',\'%@\',\'%@\',\'%@\',\'%@\',\'%@\',\'%@\',\'%@\',\'%@\',\'%@\',\'%@\',\'%@\',\'%@\')",[ltitle objectAtIndex:i],[ldate objectAtIndex:i],[lfunction objectAtIndex:i],[lservice objectAtIndex:i],[lsubservice objectAtIndex:i],[labstract objectAtIndex:i],[ldoctype objectAtIndex:i],[lcreated objectAtIndex:i],[lcorridor objectAtIndex:i],[lfeature objectAtIndex:i],[lindiastory objectAtIndex:i],[lpublish objectAtIndex:i],[ltopic objectAtIndex:i]];
        // NSLog(@"SQL Query for leader:%@",insertSQL);
        const char *insert_stmt = [insertSQL UTF8String];
        // sqlite3_prepare_v2(databaseName, insert_stmt, -1, &statement, NULL);
        sqlite3_prepare_v2(database, insert_stmt, -1, &compiledStatement, NULL);
        if(sqlite3_step(compiledStatement) == SQLITE_DONE){
            NSLog(@"Insert into leadership successful");
        }
        else {
            NSLog(@"Unable to insert in leadership");
        }
        // Release the compiled statement from memory
        sqlite3_finalize(compiledStatement);
    }
    sqlite3_close(database);
   }
}
Was it helpful?

Solution

If you add some reporting to your code, sqlite itself will tell you why it's not opening:

if(sqlite3_open([databasePath UTF8String], &database) == SQLITE_OK)
{
    // Do something
    splite3_close(database);
}
else
{
    NSLog(@"Failed to open database '%@': %s", databasePath, sqlite3_errmsg(database));
}

Also @HotLicks is correct in that you should be copying the database out of the app bundle before you access it, unless you open it readonly (by using sqlite3_open_v2() and passing in SQLITE_OPEN_READONLY as one of the flags).

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top