2011-01-10 2 views
0

에 내가 코드를 다음 사용 데이터를 삽입 한 후 오류가 - (무효)의 방법 저장가 스피 아이폰 를 사용 sqllite에 삽입 sqlite3를

전화의 {

AlarmData *alarm=[CallSettings getAlarm]; 
alarm.subject=subjectText.text; 
alarm.sound=tempDefault; 
NSDate *dat=[datePicker date]; 
NSString *da=(NSString *)[NSString stringWithFormat:@"%@",dat]; 
alarm.date=da; 

//alarmData.date=da; 
NSLog([CallSettings getAlarm].subject); 
NSLog([CallSettings getAlarm].no1); 
NSLog([CallSettings getAlarm].lname); 
NSLog([CallSettings getAlarm].name); 
NSLog([CallSettings getAlarm].date); 
NSLog([CallSettings getAlarm].sound); 


NSString *fullName=[NSString stringWithFormat:@"%@ %@",alarm.name,alarm.lname]; 

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentsPath = [paths objectAtIndex:0]; 
NSString *filePath = [documentsPath stringByAppendingPathComponent:@"appointment.sql"]; 
sqlite3 *database; 
if(sqlite3_open([filePath UTF8String], &database) == SQLITE_OK) { 
    // Setup the SQL Statement and compile it for faster access 
    const char *sqlStatement = "select * from Alarm"; 

    sqlite3_stmt *compiledStatement; 

    if(sqlite3_prepare_v2(database, sqlStatement, -1, &compiledStatement, NULL) == SQLITE_OK) { 
     // Loop through the results and add them to the feeds array 

     compiledStatement=NULL; 

     const char *sql = "insert into Alarm(name) values ('Ahmed')"; 

     if(sqlite3_prepare_v2(database, sql, -1, &compiledStatement, NULL) != SQLITE_OK); 
     else { 
      if(SQLITE_DONE != sqlite3_step(compiledStatement)) 
       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 
       //coffeeID = sqlite3_last_insert_rowid(database); 
       NSLog(@"Value is inserted"); 
      // sqlite3_reset(compiledStatement); 
     } 
    } 




    } 




} 
sqlite3_close(database); 

} // 끝을 저장 23 :이 방법 앱 충돌과 같은 오류가

2011-01-10 19 56.307 발생 약속 [521 : 207] * 의한 캐치되지 않는 예외 'NSInvalidArgumentException'이유 응용 프로그램 종료 '* + [있는 NSString stringWithUTF8St 링 :] : NULL CString을 ' 2011-01-10 19 : 23 : 56.321 약속 [521 : 207] 스택 (843,263,261 , 825,818,644, 842,812,211 , 842,812,115, 863,177,559 , 21701, 844,154,820, 19,557 , 846,200,172, 843,020,431 , 844,097,412, 844,097,260 , 844,097,204, 844,096,268 , 844,356,084, 846,188,672 , 862,896,011, 843,011,267 , 843,009,055, 860,901,832 ,"SIGABRT"843,738,160, 843,731,504 , 10,565는 10,480 ) 수신 신호 'NSException' 프로그램의 인스턴스를 던지고 후에 호출 종료. 대신 compiledStatement = NULL의 (GDB)

및 애플 리케이션 전까지 다음을 실행하지 말아 그리고 난 내 장치에서 응용 프로그램을 삭제하지 않는 한 나는 데이터베이스 파일 당신은 sqlite3_finalize (compiledStatement)를 사용한다

+0

이 원인은 null입니까? – Ali

답변

1

충돌 생각; 설명서를 읽으면 이유를 알 수 있습니다. 또는 INSERT에 대해 sqlite3_stmt에 다른 변수를 사용할 수도 있습니다.

관련 문제