FMDB: error 14, unable to open database file
I am currently using the FMDB wrapper for my iPhone app. My problem is that after executing SQL SQL statements (from 5000 to 8000 sql statements) I get the following error:
"error 14, unable to open database file"
Can anyone help me solve this error?
This is my code:
-(BOOL)insertOrUpdateinTable:(NSString *)tableName:(NSMutableArray *)columnName: (NSMutableArray *)columnValue {
[self initiateFMDB];
NSString *queryString=@"";
BOOL success;
//queryString =[[NSString alloc]init];
if (![db open]) {
NSLog(@"could not open db");
}
else {
//insert into Category(Categorycode,CategoryDesc) values (1,2)
queryString=[queryString stringByAppendingFormat:@"insert into %@(",tableName];
for (int cntCName=0; cntCName<[columnName count]; cntCName++) {
if (cntCName<[columnName count]-1){
queryString=[queryString stringByAppendingFormat:@"%@,",[columnName objectAtIndex:cntCName]];
}
else {
queryString=[queryString stringByAppendingFormat:@"%@",[columnName objectAtIndex:cntCName]];
}
}
queryString=[queryString stringByAppendingString:@") values ("];
for (int cntCValue=0; cntCValue<[columnValue count]; cntCValue++) {
if (cntCValue<[columnValue count]-1){
queryString=[queryString stringByAppendingFormat:@"'%@',",[columnValue objectAtIndex:cntCValue]];
}
else {
queryString=[queryString stringByAppendingFormat:@"'%@'",[columnValue objectAtIndex:cntCValue]];
}
}
queryString=[queryString stringByAppendingString:@")"];
// NSLog(@"QueryString=%@",queryString);
@try {
success=[db executeUpdate:[NSString stringWithFormat:@"%@",queryString]];
}
@catch (NSException *exception) {
NSLog(@"Exception error for selectFromItemPhoto is %@",[exception reason]);
}
}
if (success==TRUE) {
NSLog(@"Data inserted successfully");
}
else {
NSLog(@"Data is not inserted successfully");
}
// queryString=nil;
// [queryString release];
if ([db open]) {
[db close];
}
return success;
}
+3
source to share
1 answer
I just refactored your code and removed some things. Try to print the query string, see if there is anything wrong.
Try the following:
-(BOOL)insertOrUpdateinTable:(NSString *)tableName withColumns:(NSMutableArray *)columnName withValues:(NSMutableArray *)columnValue
{
[self initiateFMDB];
NSString *queryString=@"";
BOOL success;
if (![db open]) {
NSLog(@"could not open db");
return NO; //no need to proceed if DB could be opened.
}
//insert into Category(Categorycode,CategoryDesc) values (1,2)
queryString=[queryString stringByAppendingFormat:@"insert into %@(",tableName];
for (int cntCName=0; cntCName<[columnName count]; cntCName++)
{
if (cntCName<[columnName count]-1)
queryString=[queryString stringByAppendingFormat:@"%@,",[columnName objectAtIndex:cntCName]];
else
queryString=[queryString stringByAppendingFormat:@"%@",[columnName objectAtIndex:cntCName]];
}//first for loop ends here
queryString=[queryString stringByAppendingString:@") values ("];
for (int cntCValue=0; cntCValue<[columnValue count]; cntCValue++)
{
if (cntCValue<[columnValue count]-1)
queryString=[queryString stringByAppendingFormat:@"'%@',",[columnValue objectAtIndex:cntCValue]];
else
queryString=[queryString stringByAppendingFormat:@"'%@'",[columnValue objectAtIndex:cntCValue]];
}//second for loop ends here
queryString=[queryString stringByAppendingString:@")"];
NSLog(@"QueryString=%@",queryString);
@try {
success=[db executeUpdate:[NSString stringWithFormat:@"%@",queryString]];
}
@catch (NSException *exception) {
NSLog(@"Exception error for selectFromItemPhoto is %@",[exception reason]);
}
if (success==YES)
NSLog(@"Data inserted successfully");
else
NSLog(@"Data is not inserted successfully");
[db close];
return success;
}
0
source to share