2013-10-30 3 views
0

필기 정보 용 UITextView가 있습니다. 메모를 작성한 후 완료 버튼 텍스트가 데이터베이스에 저장됩니다. 이전 텍스트에서 계속해서 텍스트를 추가 한 다음 완료 버튼을 클릭하면 새 텍스트 행이 저장됩니다.텍스트를 iOS의 데이터베이스에 저장하는 방법

테이블 :

texts    texts_id 
    Hi     1 
    Hi, How are u?   1 

우선 내가 안녕 텍스트를 작성하고 완료를 클릭합니다. 그런 다음 데이터베이스에서 텍스트를 쿼리하고 어떻게 작성 했습니까? 그러나 그것은 새로운 행을 저장합니까? 안녕하세요. 첫 번째 행을 Hi로 대체해야합니다. 어떻게 지내십니까? 가능한가?

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

     const char *sql = [[NSString stringWithFormat:@"SELECT textnotes FROM textnote where textnote = '%@','%@',",txtview.text,artID] cStringUsingEncoding:NSUTF8StringEncoding]; 

     NSLog(@"sql is %s",sql); 

     BOOL favExist = false; 

     sqlite3_stmt *statement, *addStmt; 

     if (sqlite3_prepare_v2(database, sql, -1, &statement, NULL) == SQLITE_OK) { 
      // We "step" through the results - once for each row. 
      while (sqlite3_step(statement) == SQLITE_ROW) { 


       favExist = true; 
      } 
     } 


     if(!favExist){ 


      const char *sqlInsert = [[NSString stringWithFormat:@"insert into textnote (textnotes,text_id) values ('%@','%@')", txtview.text,artID] cStringUsingEncoding:NSUTF8StringEncoding]; 

      NSLog(@"sql insert is %s",sqlInsert); 

      // [catID release]; 

      if(sqlite3_prepare_v2(database, sqlInsert, -1, &addStmt, NULL) != SQLITE_OK) 
       NSAssert1(0, @"Error while creating add statement. '%s'", sqlite3_errmsg(database)); 

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



     } 

답변

1

삽입이 아닌 "UPDATE"문을 사용해야합니다.

처음 "완료"클릭시 코드는 정상이지만 행을 업데이트하려는 "완료"버튼을 계속 클릭하면 다음과 같은 코드를 사용해야합니다.

const char *sqlUpdate = [[NSString stringWithFormat:@"update textnotes set text = '%@' where id = rowID", txtview.text,rowID] cStringUsingEncoding:NSUTF8StringEncoding]; 

나는 당신에게 의미가 있기를 바랍니다. 삽입 할 때 단순히 새 행을 추가하는 것입니다. 또한 행 ID가 반복되지 않도록 'id'열이 AutoIncrement가 아닌 것처럼 보입니다.

관련 문제