2011-06-17 45 views
1

解析數據時,我在sqlite中插入數據。但由於某些原因,當我運行SELECT查詢時,它會返回給我額外的行和標籤空間。當我寫這個查詢時,它會正確地插入數據,但有額外的空格。SQLITE Insert用額外的行返回值

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName 
    namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName 
    attributes:(NSDictionary *)attributeDict { 

    if([elementName isEqual:@"root"]) { 
} 

else if([elementName isEqualToString:@"value"]) { 
    value = [[Value alloc] init] ; 
} 
} 

- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string { 

    if(!trueValue) 
     trueValue = [[NSMutableString alloc] initWithString:string]; 
    else{ 
     [trueValue appendString:string]; 

    } 
    } 

- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName 
    namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName { 

if([elementName isEqualToString:@"root"]) 
    return; 


if([elementName isEqualToString:@"value"]) { 

    NSString *sqlQuery = [NSString stringWithFormat:@"INSERT OR REPLACE INTO DETAIL(ID,KEY, TITLE) VALUES ('%@','%@','%@');", key, parent_key, title]; 
    const char *insert_sql = [sqlQuery UTF8String]; 
    sqlite3_exec(db, insert_sql, NULL, NULL, NULL); 
} 



else if([elementName isEqualToString:@"key"]) 
    [value setValue:finalValue forKey:elementName] 

[trueValue release]; 
trueValue = nil; 

}

我怎能取代多餘的空格基本上是這樣的: 「\ n \ t \ t \ t」 的有 「」 這個說法對所有行過嗎?

+0

爲什麼有5'%@'和3個值? – meggar

+0

更新! srry的錯字! – lifemoveson

回答

1

我有一個類似的問題,我固定通過修剪了所有的空格這樣的字符:

- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string { 

    if(!trueValue) 
     trueValue = [[NSMutableString alloc] initWithString:[string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]]; 
    else 
     [trueValue appendString:[string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]]; 

} 
+0

謝謝約翰尼它工作! – lifemoveson

0

試試這個:

[字符串stringByReplacingOccurrencesOfString:@ 「\ n \ t \ t \ t」 的withString:@ 「」]

+0

jschmidt:我更新了我的代碼。如何在解析和插入數據時避免這些空間? – lifemoveson

+0

如果字符總是已知的字符數,您可以將字符截斷。或者,您可以使用上述相同的方法在執行查詢之前刪除字符。 – jschmidt