【问题标题】:SQLITE Insert returns value with extra lineSQLITE 插入返回带有额外行的值
【发布时间】:2011-06-17 17:41:42
【问题描述】:

在解析数据时,我在 sqlite 中插入数据。但是由于某种原因,当我运行 SELECT 查询时,它返回给我额外的行和一个制表符空间。当我编写此查询时,它会正确插入数据,但带有额外的空格。

- (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" 与 ""?

【问题讨论】:

  • 为什么有 5 个 '%@' 和 3 个值?
  • 更新了!!!抱歉错字!!

标签: iphone objective-c insert sqlite


【解决方案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]]];

}

【讨论】:

    【解决方案2】:

    试试这个:

    [string stringByReplacingOccurrencesOfString:@"\n\t\t\t" withString:@""]

    【讨论】:

    • jschmidt:我已经更新了我的代码。在解析然后插入数据时如何避免这些空格?
    • 如果字符数始终为已知,您可以将字符从末尾剪掉。或者,您可以使用上述相同的方法在执行查询之前删除字符。
    猜你喜欢
    • 1970-01-01
    • 2019-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-01
    • 2021-12-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多