2014-02-14 29 views
1

当我在NSLog中显示我的数据时,它显示正常。但是当我解析数据时将数据插入到数组中时,数组显示错误的有序数据。虽然我iserting我得到空值HNM_Id。所以我无法插入。哪里有问题?插入失败:数据类型不匹配

这是我使用的代码:

-(void)parseResponse:(NSData*)data{ 
    NSString *xmlStr = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding]; 
    NSLog(@"parseResponse Xml string %@",xmlStr); 

    [sqliteManager deleteLoginDetails]; 

    TBXMLEx *xml = [TBXMLEx parserWithXML:xmlStr]; 


     if (xml.rootElement) { 


     TBXMLElementEx *returnNode = xml.rootElement; 

     TBXMLElementEx *fileNode = [returnNode child:@"AllHospitalNetwork"]; 

     while ([fileNode next]) { 
      NSMutableArray* allHospitalNetwork = [NSMutableArray new]; 

      TBXMLElementEx *hospitalNetworkNode = [fileNode child:@"HospitalNetwork"]; 

      while ([hospitalNetworkNode next]) { 
       NSMutableDictionary* hospitalNetwork = [NSMutableDictionary new]; 

       TBXMLElementEx *HNM_IdNode = [hospitalNetworkNode child:@"HNM_ID"]; 

       NSLog(@"HNM is %@",HNM_IdNode); 

       if (HNM_IdNode) { 
        [hospitalNetwork setObject:HNM_IdNode.value forKey:@"HNM_ID"]; 

        NSLog(@"HNM1 is %@",HNM_IdNode); 

        NSLog(@"HNM2 is %@",HNM_IdNode.value); 
       } 

       TBXMLElementEx *HNM_Network_NameNode = [hospitalNetworkNode child:@"HNM_Network_Name"]; 

       if (HNM_Network_NameNode) { 
        [hospitalNetwork setObject:[NSString stringWithFormat:@"%@",HNM_Network_NameNode.value] forKey:@"HNM_Network_Name"]; 
       } 

       TBXMLElementEx *HNM_StatusNode = [hospitalNetworkNode child:@"HNM_Status"]; 

       if (HNM_StatusNode) { 
        [hospitalNetwork setObject:HNM_StatusNode.value forKey:@"HNM_Status"]; 
       } 

       TBXMLElementEx *HNM_Created_DateNode = [hospitalNetworkNode child:@"HNM_Created_Date"]; 

       if (HNM_Created_DateNode) { 
        [hospitalNetwork setObject:HNM_Created_DateNode.value forKey:@"HNM_Created_Date"]; 
       } 

       TBXMLElementEx *HNM_Created_ByNode = [hospitalNetworkNode child:@"HNM_Created_By"]; 

       if (HNM_Created_ByNode) { 
        [hospitalNetwork setObject:HNM_Created_ByNode.value forKey:@"HNM_Created_By"]; 
       } 

       TBXMLElementEx *HNM_Modified_DateNode = [hospitalNetworkNode child:@"HNM_Modified_Date"]; 

       if (HNM_Created_ByNode) { 
        [hospitalNetwork setObject:HNM_Modified_DateNode.value forKey:@"HNM_Modified_Date"]; 
       } 

       TBXMLElementEx *HNM_Modified_ByNode = [hospitalNetworkNode child:@"HNM_Modified_By"]; 

       if (HNM_Modified_ByNode) { 
        [hospitalNetwork setObject:HNM_Modified_ByNode.value forKey:@"HNM_Modified_By"]; 
       } 

       [allHospitalNetwork addObject:hospitalNetwork]; 


       NSLog(@"allHospitalNetwork insert is %@ ",allHospitalNetwork); 

      } 
       [sqliteManager insertHospitalNetwork:allHospitalNetwork]; 


     } 

parseResponse XML字符串的NSLog:

<?xml version="1.0"?> 
<AllLoginDetails> 
    <AllHospitalNetwork> 
    <HospitalNetwork> 
     <HNM_ID>1</HNM_ID> 
     <HNM_Network_Name>Health Care</HNM_Network_Name> 
     <HNM_Status>A</HNM_Status> 
     <HNM_Created_Date>24/06/2013 17:46:58</HNM_Created_Date> 
     <HNM_Created_By>1</HNM_Created_By> 
     <HNM_Modified_Date /> 
     <HNM_Modified_By /> 
    </HospitalNetwork> 
    </AllHospitalNetwork> 

但阵列值顺序改变:

allHospitalNetwork insert is (
     { 
     "HNM_Created_By" = 1; 
     "HNM_Created_Date" = "24/06/2013 17:46:58"; 
     "HNM_ID" = 1; 
     "HNM_Modified_By" = ""; 
     "HNM_Modified_Date" = ""; 
     "HNM_Network_Name" = "Health Care"; 
     "HNM_Status" = A; 
    } 

插入:

插入失败:数据类型不匹配

回答

-1

我不知道哪种语言是这样的,

,但试图利用到位下面的代码,您所创建的SQL查询。

sqlStr stringByAppendingString:[NSString stringWithFormat:@" SELECT '%@','%@','%@','%@','%@','%@','%@','%@'",[feedDict objectForKey:@"HM_Id"] ,......

+0

以前我的代码是工作...现在它不工作... – user2967559

0

您使用大量艰巨的方式来做到这一点插入任务,其实我不能得到完全什么是U做什么,但IM提供UA以下模板插入目的..

在这里你的代码,你是不是准备查询语句,你是直接执行查询,所以首先应该正确准备的语句和后者能够执行它...

这里是模板,

sqlite3_stmt *statement; 
NSString *insertSQL = [NSString stringWithFormat:@"insert into table_name (col_name_1, col_name_2, col_name_3) values(\"%@\",\"%d\",\"%d\")",variable_vale_1, variable_vale_2, variable_vale_3]; 
// Here i m assuming that first value is NSString type and other are integer type 
    const char *insert_stmt = [insertSQL UTF8String]; 
    sqlite3_prepare_v2(database_object, insert_stmt,-1, &statement, NULL); 
    if (sqlite3_step(statement) != SQLITE_DONE) 
    { 
     NSLog(@"Statement is Failed....."); 
    } 
sqlite3_finalize(statement); 

不要忘记最后确定你的陈述,在提供实体的数据类型时要小心。

使用该模板就安排你的代码,我希望它会为你工作...