2011-10-24 4 views
3

일부 데이터를 mydatabase.sqlite에 삽입하고 싶지만 문제가 있습니다. 데이터를 삽입 할 때 오류 메시지가 나타나지 않지만 데이터베이스를 열면 데이터가 표시되지 않습니다. 어떤 데이터도 없습니다. SQLite 객관적인 C 데이터를 삽입하십시오

은 MyClass의에서 addCoffee 방법입니다 :

if(addStmt == nil) { 
    const char *sql = "insert into records(Date, Latitude, Longitude) Values(?, ?, ?)"; 
    if(sqlite3_prepare_v2(database, sql, -1, &addStmt, NULL) != SQLITE_OK) 
     NSAssert1(0, @"Error while creating add statement. '%s'", sqlite3_errmsg(database)); 
} 

sqlite3_bind_text(addStmt, 1, [Date UTF8String], -1, SQLITE_TRANSIENT); 
sqlite3_bind_double(addStmt, 2, [Latitude doubleValue]); 
sqlite3_bind_double(addStmt, 3, [Longitude doubleValue]); 

if(SQLITE_DONE != sqlite3_step(addStmt)) 
    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 
    recordID = sqlite3_last_insert_rowid(database); 

//Reset the add statement. 
sqlite3_reset(addStmt); 

전송 데이터 :

iDailyAppDelegate *appDelegate = (iDailyAppDelegate *)[[UIApplication sharedApplication] delegate]; 

//Create a MyClass Object. 
MyClass *coffeeObj = [[MyClass alloc] initWithPrimaryKey:0]; 
coffeeObj.Date = dateInString; 
NSDecimalNumber *temp = [[NSDecimalNumber alloc] initWithString:first]; 
coffeeObj.Latitude = temp; 
NSDecimalNumber *temp2 = [[NSDecimalNumber alloc] initWithString:second]; 
coffeeObj.Longitude = temp2; 
[temp release]; 
coffeeObj.isDirty = NO; 
coffeeObj.isDetailViewHydrated = YES; 

//Add the object 
[appDelegate addCoffee:coffeeObj]; 
+0

'BEGIN TRANSACTION'을 (를) 실행했을 가능성이 있습니다. 해당 'COMMIT'을 실행하지 않았습니까? –

+0

미안 내가 뭘 할 수있어, 내가 너를 이해하지 못 했니 ??? –

+0

제발 helppp mee !! –

답변

1
- (void)inserting{ 

    database=nil; 
    if (sqlite3_open([[DBAction getSqlitePath] UTF8String], &database) == SQLITE_OK){ 
     const char *sql = [[NSString stringWithFormat:@"insert into SiteTable set Site_Address = '%@'",someString] UTF8String]; 
     sqlite3_stmt *updateStmt = nil; 
     if(sqlite3_prepare_v2(database, sql, -1, &updateStmt, NULL) != SQLITE_OK) 
     { 
      //NSAssert1(0, @"Error while creating update statement. '%s'", sqlite3_errmsg(database)); 
     } 
     if (SQLITE_DONE != sqlite3_step(updateStmt)){ 
      //NSAssert1(0, @"Error while creating database. '%s'", sqlite3_errmsg(database)); 
     } 
     sqlite3_reset(updateStmt); 
     sqlite3_finalize(updateStmt); 
    } 
    else{ 
     //NSAssert1(0, @"Error while opening database '%s'", sqlite3_errmsg(database)); 
    } 
    sqlite3_close(database); 

} 
+0

왜 삽입 대신 update 문을 사용하고 있습니까? 또한이 방법을 시도했지만 레코드가 아닙니다. S –

+0

업데이트 대신 삽입을 사용할 수 있습니다 – Tendulkar

+0

수정 된 응답을보세요 – Tendulkar

1

당신이 데이터베이스에 보내고 다음에서 그들을 실행하려고 모든 SQL 명령에 대한 NSLog 만들기 터미널에 연결하면 모든 오류가 표시되고이를 수정할 수 있습니다.

+0

모든 SQL 문 다음에 nslog가 있습니다. 어떤 오류 메시지도 표시하지 않습니다 !! –

+0

나는 그것을 고쳤다. –

관련 문제