2011-09-13 6 views
2

데이터베이스가있는 iPhone 응용 프로그램을 만들고 있습니다. 이 데이터베이스에서 datepicker을 사용하여 선택한 날짜를 저장하려고합니다. 하지만 쿼리를 삽입 할 때마다 충돌이 발생하고 표시되는 오류 즉, -[__NSDate UTF8String]: message sent to de allocated instance 0x5db1bf0. 이 오류를 해결할 수 없습니다. 제발 sqlite에 날짜를 삽입하는 몇 가지 솔루션을 제공하십시오.날짜를 sqlite에 삽입하십시오.

대단히 감사합니다.

-(void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex { 
    if (btntagvalue == 2) { 
     if (buttonIndex != [actionSheet cancelButtonIndex]) { 
      selectedDate1 = [pickerView date]; 
      NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; 
      [formatter setDateFormat:@"yyyy-MM-dd"]; 
      frmdatestring = [formatter stringFromDate:selectedDate1]; 
      newfromdate = [[NSDate alloc]init]; 
      newfromdate = [[selectedDate1 addTimeInterval:-21600*4]copy]; 
      NSLog(@"newdateis:%@",newfromdate); 
      fromdate.text = frmdatestring; 
      NSLog(@"proper date:%@",fromdate.text); 

     } 
    } 
    else if (btntagvalue == 3) 
    { 
     if (buttonIndex != [actionSheet cancelButtonIndex]) { 
      NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; 
      [formatter setDateFormat:@"yyyy-MM-dd"]; 
      selectedDate2 = [pickerView1 date]; 
      LastDate = selectedDate2; 
      todatestring = [formatter stringFromDate:selectedDate2]; 
      todate.text = todatestring; 
      NSLog(@"proper date:%@",todate.text); 
      [self counteddays]; 
     } 
    } 
} 

-(IBAction)savedetails:(id)sender 
{ 
    docname = doctname; 
    mail = email; 
    contactnum = contact; 
    medicname = mediname; 
    medictype = meditype; 
    Lastdatecolmn = (NSString*)LastDate; 

    [self insert1]; 
    NSLog(@"docname:%@",docname); 
    NSLog(@"mail:%@",mail); 
    NSLog(@"contactnum:%@",contactnum); 
    NSLog(@"medicname:%@",medicname); 
    NSLog(@"medictype:%@",medictype); 

    for (int i =0; i<=[totaltimewithdate count]-1; i++) { 
    Dtime = [totaltimewithdate objectAtIndex:i];  
     [self insert];  
    } 
    [self docmedname]; 

} 

-(void)insert 
{ 
    sqlite3_stmt *addStmt = nil; 

    if(addStmt == nil) 
    { 
      const char *sql = "insert into medicationdetail(doctorname, emailid, contactno,medicationname, medicationtype, datetime,LastDateColmn) values (?,?,?,?,?,?,?)"; 

     //NSLog(@"sq; %@", sql); 
      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, [docname UTF8String], -1, SQLITE_TRANSIENT); 
      sqlite3_bind_text(addStmt, 2, [mail UTF8String], -1, SQLITE_TRANSIENT); 
      sqlite3_bind_text(addStmt, 3, [contactnum UTF8String], -1, SQLITE_TRANSIENT); 
      sqlite3_bind_text(addStmt, 4, [medicname UTF8String], -1, SQLITE_TRANSIENT); 
      sqlite3_bind_text(addStmt, 5, [medictype UTF8String], -1, SQLITE_TRANSIENT); 
      sqlite3_bind_text(addStmt, 6, [Dtime UTF8String], -1, SQLITE_TRANSIENT); 
     sqlite3_bind_text(addStmt, 7, [Lastdatecolmn UTF8String], -1, SQLITE_TRANSIENT); 
      if(SQLITE_DONE != sqlite3_step(addStmt)) 
      { 
       NSAssert1(0, @"Error while inserting data. '%s'", sqlite3_errmsg(database)); 
      } 

    } 

} 
+0

당신이 게시 할 수 있다면 그것은 도움이됩니다 사용중인 코드를 사용하면보다 구조화 된 응답을 얻을 수 있습니다. –

+0

plz 코드를 제공합니다 .. – Maulik

+0

DATETIME으로 입력하면 해당 날짜 개체를 문자열로 저장하거나 double로 저장하면 더 좋습니다. – Narayana

답변

0
내 생각 엔 당신이있는 NSDate 속성을 만들려고하고 있는지,하지만 당신은 실수있는 NSString으로이 설정하려고하고 있다는 것

, e.g. @"01-01-1999".

당신은 당신의 "날짜 및 시간 프로그래밍을 선택하면 가이드 "를 읽으면 날짜 구성 요소를 사용하여 날짜를 만드는 방법의 좋은 예가됩니다.

또한 스택 오버플로, 당신은 "NSString에서 CreateNSDate"에서 검색하면 빠르게 많은 예를 찾을 수 있습니다, 예를 들면에 봐 :

get NSDate from NSString

관련 문제