SST
SST

Reputation: 2040

"sqlite3_exce read only data base" error while inserting or updating data into table

I am getting an "sqlite3_exce read only data base" error while inserting or updating data into table.

Because initially I have to create number of tables in data base & insert lots of data into it, so I create a one dummy application which create "database.sql" database,create Table & it insert data into the tables.

Now I put "database.sql" file into resources folder of my Main application & gives main bundle path while accessing data from data base.

I am able to access the data from it but while insert or update data from table, I get above mention error.

kindly help me to solve above problem.

Thank You.

Upvotes: 0

Views: 202

Answers (2)

user176891
user176891

Reputation:

static sqlite3 * getDbHandle() {

NSFileManager *fileManager = [NSFileManager defaultManager];

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];     // path to Documents folder
NSString * databaseFileName = [documentsDirectory stringByAppendingString:@"/feeds.db"];

// check if db file is in documents folder
// If it is already there, thats great.
// Else, we need to copy it there.

BOOL dbExists = [fileManager fileExistsAtPath:databaseFileName];

if ( !dbExists ) {
    NSLog(@"No database in document folder.Need to move it there");

    // we need to copy the file here...
    NSString * databaseFileinAppDir = [ [NSBundle mainBundle] pathForResource:@"feeds" ofType:@"db"];

    NSError *error;

    NSLog(@"Target Db %@",databaseFileName);

    [fileManager copyItemAtPath:databaseFileinAppDir toPath:databaseFileName error:&error];

    if ( error ){
        NSLog(@"ERROR IN FILE MOVE:{%@}",[error description]);
        return NULL;
    }
}

sqlite3 *database = NULL;

if ( sqlite3_open([databaseFileName UTF8String], &database ) != SQLITE_OK ) {
    printf("ERROR: Unable to open database %@",databaseFileName);
    return NULL;
}

return database;

}

Upvotes: 0

oxigen
oxigen

Reputation: 6263

Yes, files in maib bundle are read only.

You can write ONLY in Documents folder.

Copy your database file into documents and work with it

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0]; // path to Documents folder

Upvotes: 4

Related Questions