2012-05-07 71 views
0

iam獲取數據庫鎖定錯誤。數據庫鎖定錯誤

-(IBAction)YesData:(id)sender 
{ 
[self Check_Create_DB]; 

sqlite3 *database; 



if(idimg == 0) 
{ 

NSData *imgData = UIImagePNGRepresentation(image.image); 

UIImage *dataImage=[[UIImage alloc] init]; 

dataImage=[UIImage imageWithData:imgData]; 

    int ycount1=1; 

int ncount1=0; 

int neutcount1=0; 

if(sqlite3_open([dbpath UTF8String],&database)==SQLITE_OK) 

{ 
    NSLog(@"Connection Open"); 

    const char *sqlTmp="insert into 

    images(imgname,ycount,ncount,neutcount)values(?,?,?,?)"; 


    sqlite3_stmt *cmp_sqlstmt; 

    int returnvalue=sqlite3_prepare_v2(database,sqlTmp,-1,&cmp_sqlstmt,NULL); 

    if(returnvalue == SQLITE_OK) 
    {  
     sqlite3_bind_blob(cmp_sqlstmt, 1, [imgData bytes], [imgData length], NULL); 

     sqlite3_bind_int(cmp_sqlstmt, 2, ycount1); 


     sqlite3_bind_int(cmp_sqlstmt, 3, ncount1); 

     sqlite3_bind_int(cmp_sqlstmt, 4, neutcount1); 

     if(SQLITE_DONE != sqlite3_step(cmp_sqlstmt)) 
           NSAssert1(0, @"Error while inserting. '%s'",sqlite3_errmsg(database)); 

     NSLog(@"insert successfully") ;    

    } 
    sqlite3_step(cmp_sqlstmt); 

    sqlite3_finalize(cmp_sqlstmt); 

    sqlite3_close(database); 





    [email protected]"You Voted Yes"; 

    [newView setHidden:NO]; 
    } 
    else 
    { 
     sqlite3_close(database); 
    } 


    } 
    else 
    { 
    // [self Check_Create_DB]; 
    //sqlite3 *database; 

    sqlite3_open([dbpath UTF8String],&database); 

    if(sqlite3_open([dbpath UTF8String],&database)==SQLITE_OK) 
    { 

     NSLog(@"Connection Open"); 

     idycount+=1; 

     const char *sqlTmp="update Images set ycount=? where imgid= ?"; 


     sqlite3_stmt *cmp_sqlstmt; 


     int returnvalue=sqlite3_prepare_v2(database,sqlTmp,-1,&cmp_sqlstmt,NULL); 


     NSLog(@"return value.....%d",returnvalue); 


     if(returnvalue == SQLITE_OK) 

     { 

      sqlite3_bind_int(cmp_sqlstmt,1,idycount); 


      sqlite3_bind_int(cmp_sqlstmt,2,idimg); 


      NSLog(@"updated"); 

      if(SQLITE_DONE != sqlite3_step(cmp_sqlstmt)) 

       NSAssert1(0, @"Error while updating. '%s'", sqlite3_errmsg(database)); 


      sqlite3_reset(cmp_sqlstmt);  


     } 
     else 
     { 

      NSAssert1(0, @"Error while creating update statement. '%s'", sqlite3_errmsg(database)); 


     } 

     sqlite3_step(cmp_sqlstmt); 


     sqlite3_finalize(cmp_sqlstmt); 


     sqlite3_close(database); 



    } 
    else 
    { 

    sqlite3_close(database); 


    } 


    } 
} 
+0

這是錯誤:'NSInternalInconsistencyException',原因:'更新時出錯。 '數據庫被鎖定'」 ***在第一擲調用堆棧: ( \t 0的CoreFoundation 0x00f5b5a9 __exceptionPreprocess + 185 \t 1 libobjc.A.dylib 0x00d8a313 objc_exception_throw + 44 \t 2的CoreFoundation 0x00f13ef8 + [NSException提高:格式:參數:] + 136 –

回答

0

在我看來你還沒有正確關閉數據庫(sqlite3_close(database))。

對於未來的項目看一看FMDatabase:在您關閉數據庫properly.Try重裝數據庫和表

0

Offtopic這可能發生在你的實現看起來像上面。

FMDatabase is an Objective-C wrapper around SQLite

相關問題