2017-09-15 4 views
-8

객관적인 C에서 응용 프로그램을 만들고 있습니다.EXC_BAD_ACCESS 목적 - C에서 예외 쿼리에서 삽입

이 응용 프로그램에서는 데이터베이스 테이블에서 데이터를 가져오고 싶습니다.

이 표에는 객관적인 C 코드에서 데이터를 삽입하려는 225 개의 열이 있습니다.

내가 100 열을 삽입 할 때 잘 작동하지만 난 225 열 값을 삽입 할 때이 오류 충돌 :

Thread:1 EXC_BAD_ACCESS code:1 address:0xfffffffff. 

내가 쿼리를 지정하는 변수가있는 NSString의 유형입니다. 문제점 및 문제점 해결 방법을 알려주십시오.

tmpStr2=[NSString stringWithFormat:@"insert into tblButterflyData(SeqNo,GeoLevelCode,GeoCode,FCMonth,CategoryCode,AFFig1,AFFig2,AFFig3,AFFig4,AFFig1Hdr,AFFig2Hdr,AFFig3Hdr,AFFig4Hdr,KLFig1,KLFig2,KLFig3,KLFig4,KLFig1Hdr,KLFig2Hdr,KLFig3Hdr,KLFig4Hdr,AFKLFig1,AFKLFig2,AFKLFig3,AFKLFig4,AFKLFig1Hdr,AFKLFig2Hdr,AFKLFig3Hdr,AFKLFig4Hdr,AFFig1YTE,AFFig2YTE,AFFig3YTE,AFFig4YTE,AFFig1HdrYTE,AFFig2HdrYTE,AFFig3HdrYTE,AFFig4HdrYTE,KLFig1YTE,KLFig2YTE,KLFig3YTE,KLFig4YTE,KLFig1HdrYTE,KLFig2HdrYTE,KLFig3HdrYTE,KLFig4HdrYTE,AFKLFig1YTE,AFKLFig2YTE,AFKLFig3YTE,AFKLFig4YTE,AFKLFig1HdrYTE,AFKLFig2HdrYTE,AFKLFig3HdrYTE,AFKLFig4HdrYTE,AFFig1YTD,AFFig2YTD,AFFig3YTD,AFFig4YTD,AFFig1HdrYTD,AFFig2HdrYTD,AFFig3HdrYTD,AFFig4HdrYTD,KLFig1YTD,KLFig2YTD,KLFig3YTD,KLFig4YTD,KLFig1HdrYTD,KLFig2HdrYTD,KLFig3HdrYTD,KLFig4HdrYTD,AFKLFig1YTD,AFKLFig2YTD,AFKLFig3YTD,AFKLFig4YTD,AFKLFig1HdrYTD,AFKLFig2HdrYTD,AFKLFig3HdrYTD,AFKLFig4HdrYTD,AddedOn,AddedBy,LastUpdatedOn,LastUpdatedBy,AFFig1AS8,AFFig2AS8,AFFig3AS8,AFFig4AS8,AFFig1HdrAS8,AFFig2HdrAS8,AFFig3HdrAS8,AFFig4HdrAS8,KLFig1AS8,KLFig2AS8,KLFig3AS8,KLFig4AS8,KLFig1HdrAS8,KLFig2HdrAS8,KLFig3HdrAS8,KLFig4HdrAS8,AFKLFig1AS8,AFKLFig2AS8,AFKLFig3AS8,AFKLFig4AS8,AFKLFig1HdrAS8,AFKLFig2HdrAS8,AFKLFig3HdrAS8,AFKLFig4HdrAS8,AFFig1SA8,AFFig2SA8,AFFig3SA8,AFFig4SA8,AFFig1HdrSA8,AFFig2HdrSA8,AFFig3HdrSA8,AFFig4HdrSA8,KLFig1SA8,KLFig2SA8,KLFig3SA8,KLFig4SA8,KLFig1HdrSA8,KLFig2HdrSA8,KLFig3HdrSA8,KLFig4HdrSA8,AFKLFig1SA8,AFKLFig2SA8,AFKLFig3SA8,AFKLFig4SA8,AFKLFig1HdrSA8,AFKLFig2HdrSA8,AFKLFig3HdrSA8,AFKLFig4HdrSA8,AFFig1AF8,AFFig2AF8,AFFig3AF8,AFFig4AF8,AFFig1HdrAF8,AFFig2HdrAF8,AFFig3HdrAF8,AFFig4HdrAF8,KLFig1AF8,KLFig2AF8,KLFig3AF8,KLFig4AF8,KLFig1HdrAF8,KLFig2HdrAF8,KLFig3HdrAF8,KLFig4HdrAF8,AFKLFig1AF8,AFKLFig2AF8,AFKLFig3AF8,AFKLFig4AF8,AFKLFig1HdrAF8,AFKLFig2HdrAF8,AFKLFig3HdrAF8,AFKLFig4HdrAF8,AFFig1CI8,AFFig2CI8,AFFig3CI8,AFFig4CI8,AFFig1HdrCI8,AFFig2HdrCI8,AFFig3HdrCI8,AFFig4HdrCI8,KLFig1CI8,KLFig2CI8,KLFig3CI8,KLFig4CI8,KLFig1HdrCI8,KLFig2HdrCI8,KLFig3HdrCI8,KLFig4HdrCI8,AFKLFig1CI8,AFKLFig2CI8,AFKLFig3CI8,AFKLFig4CI8,AFKLFig1HdrCI8,AFKLFig2HdrCI8,AFKLFig3HdrCI8,AFKLFig4HdrCI8,AFFig1ME8,AFFig2ME8,AFFig3ME8,AFFig4ME8,AFFig1HdrME8,AFFig2HdrME8,AFFig3HdrME8,AFFig4HdrME8,KLFig1ME8,KLFig2ME8,KLFig3ME8,KLFig4ME8,KLFig1HdrME8,KLFig2HdrME8,KLFig3HdrME8,KLFig4HdrME8,AFKLFig1ME8,AFKLFig2ME8,AFKLFig3ME8,AFKLFig4ME8,AFKLFig1HdrME8,AFKLFig2HdrME8,AFKLFig3HdrME8,AFKLFig4HdrME8,AFFig1FC8,AFFig2FC8,AFFig3FC8,AFFig4FC8,AFFig1HdrFC8,AFFig2HdrFC8,AFFig3HdrFC8,AFFig4HdrFC8,KLFig1FC8,KLFig2FC8,KLFig3FC8,KLFig4FC8,KLFig1HdrFC8,KLFig2HdrFC8,KLFig3HdrFC8,KLFig4HdrFC8,AFKLFig1FC8,AFKLFig2FC8,AFKFig3FC8,AFKLFig4FC8,AFKLFig1HdrFC8,AFKLFig2HdrFC8,AFKLFig3HdrFC8,AFKLFig4HdrFC8)values('%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@','%@')",strSeqNo,strGeoLevelCode,strGeoCode,strFCMonth,strCategoryCode,strAFFig1,strAFFig2,strAFFig3,strAFFig4,strAFFig1Hdr,strAFFig2Hdr,strAFFig3Hdr,strAFFig4Hdr,strKLFig1,strKLFig2,strKLFig3,strKLFig4,strKLFig1Hdr,strKLFig2Hdr,strKLFig3Hdr,strKLFig4Hdr,strAFKLFig1,strAFKLFig2,strAFKLFig3,strAFKLFig4,strAFKLFig1Hdr,strAFKLFig2Hdr,strAFKLFig3Hdr,strAFKLFig4Hdr,strAFFig1YTE,strAFFig2YTE,strAFFig3YTE,strAFFig4YTE,strAFFig1HdrYTE,strAFFig2HdrYTE,strAFFig3HdrYTE,strAFFig4HdrYTE,strKLFig1YTE,strKLFig2YTE,strKLFig3YTE,strKLFig4YTE,strKLFig1HdrYTE,strKLFig2HdrYTE,strKLFig3HdrYTE,strKLFig4HdrYTE,strAFKLFig1YTE,strAFKLFig2YTE,strAFKLFig3YTE,strAFKLFig4YTE,strAFKLFig1HdrYTE,strAFKLFig2HdrYTE,strAFKLFig3HdrYTE,strAFKLFig4HdrYTE,strAFFig1YTD,strAFFig2YTD,strAFFig3YTD,strAFFig4YTD,strAFFig1HdrYTD,strAFFig2HdrYTD,strAFFig3HdrYTD,strAFFig4HdrYTD,strKLFig1YTD,strKLFig2YTD,strKLFig3YTD,strKLFig4YTD,strKLFig1HdrYTD,strKLFig2HdrYTD,strKLFig3HdrYTD,strKLFig4HdrYTD,strAFKLFig1YTD,strAFKLFig2YTD,strAFKLFig3YTD,strAFKLFig4YTD,strAFKLFig1HdrYTD,strAFKLFig2HdrYTD,strAFKLFig3HdrYTD,strAFKLFig4HdrYTD,strAddedOn,strAddedBy,strLastUpdatedOn,strLastUpdatedBy,strAFFig1AS8,strAFFig2AS8,strAFFig3AS8,strAFFig4AS8,strAFFig1HdrAS8,strAFFig2HdrAS8,strAFFig3HdrAS8,strAFFig4HdrAS8,strKLFig1AS8,strKLFig2AS8,strKLFig3AS8,strKLFig4AS8,strKLFig1HdrAS8,strKLFig2HdrAS8,strKLFig3HdrAS8,strKLFig4HdrAS8,strAFKLFig1AS8,strAFKLFig2AS8,strAFKLFig3AS8,strAFKLFig4AS8,strAFKLFig1HdrAS8,strAFKLFig2HdrAS8,strAFKLFig3HdrAS8,strAFKLFig4HdrAS8,strAFFig1SA8,strAFFig2SA8,strAFFig3SA8,strAFFig4SA8,strAFFig1HdrSA8,strAFFig2HdrSA8,strAFFig3HdrSA8,strAFFig4HdrSA8,strKLFig1SA8,strKLFig2SA8,strKLFig3SA8,strKLFig4SA8,strKLFig1HdrSA8,strKLFig2HdrSA8,strKLFig3HdrSA8,strKLFig4HdrSA8,strAFKLFig1SA8,strAFKLFig2SA8,strAFKLFig3SA8,strAFKLFig4SA8,strAFKLFig1HdrSA8,strAFKLFig2HdrSA8,strAFKLFig3HdrSA8,strAFKLFig4HdrSA8,strAFFig1AF8,strAFFig2AF8,strAFFig3AF8,strAFFig4AF8,strAFFig1HdrAF8,strAFFig2HdrAF8,strAFFig3HdrAF8,strAFFig4HdrAF8,strKLFig1AF8,strKLFig2AF8,strKLFig3AF8,strKLFig4AF8,strKLFig1HdrAF8,strKLFig2HdrAF8,strKLFig3HdrAF8,strKLFig4HdrAF8,strAFKLFig1AF8,strAFKLFig2AF8,strAFKLFig3AF8,strAFKLFig4AF8,strAFKLFig1HdrAF8,strAFKLFig2HdrAF8,strAFKLFig3HdrAF8,strAFKLFig4HdrAF8,strAFFig1CI8,strAFFig2CI8,strAFFig3CI8,strAFFig4CI8,strAFFig1HdrCI8,strAFFig2HdrCI8,strAFFig3HdrCI8,strAFFig4HdrCI8,strKLFig1CI8,strKLFig2CI8,strKLFig3CI8,strKLFig4CI8,strKLFig1HdrCI8,strKLFig2HdrCI8,strKLFig3HdrCI8,strKLFig4HdrCI8,strAFKLFig1CI8,strAFKLFig2CI8,strAFKLFig3CI8,strAFKLFig4CI8,strAFKLFig1HdrCI8,strAFKLFig2HdrCI8,strAFKLFig3HdrCI8,strAFKLFig4HdrCI8,strAFFig1ME8,strAFFig2ME8,strAFFig3ME8,strAFFig4ME8,strAFFig1HdrME8,strAFFig2HdrME8,strAFFig3HdrME8,strAFFig4HdrME8,strKLFig1ME8,strKLFig2ME8,strKLFig3ME8,strKLFig4ME8,strKLFig1HdrME8,strKLFig2HdrME8,strKLFig3HdrME8,strKLFig4HdrME8,strAFKLFig1ME8,strAFKLFig2ME8,strAFKLFig3ME8,strAFKLFig4ME8,strAFKLFig1HdrME8,strAFKLFig2HdrME8,strAFKLFig3HdrME8,strAFKLFig4HdrME8,strAFFig1FC8,strAFFig2FC8,strAFFig3FC8,strAFFig4FC8,strAFFig1HdrFC8,strAFFig2HdrFC8,strAFFig3HdrFC8,strAFFig4HdrFC8,strKLFig1FC8,strKLFig2FC8,strKLFig3FC8,strKLFig4FC8,strKLFig1HdrFC8,strKLFig2HdrFC8,strKLFig3HdrFC8,strKLFig4HdrFC8,strAFKLFig1FC8,strAFKLFig2FC8,strAFKLFig3FC8,strAFKLFig4FC8,strAFKLFig1HdrFC8,strAFKLFig2HdrFC8,strAFKLFig3HdrFC8,strAFKLFig4HdrFC8]; 
+6

당신은 이것을 읽은 후에 누군가가 wht가 진행되고 있음을 이해할 수 있다고 생각합니까? – user5014677

답변

0

먼저, 어떤 라이브러리 또는 코드 조각이 실제로 범인인지 추적해야합니다. [NSString stringWithFormat : ...] 줄의 코드가 문제가되면 모든 인수가 유효한지 확인하고 싶습니다. 그 중 하나에 예기치 않은 데이터가 들어있을 수 있습니다.

NSMutableArray<NSString *> *columns = [NSMutableArray new]; 
NSMutableArray<NSString *> *values = [NSMutableArray new]; 

[self forColumns:columns andValues:values addColumn:@"SeqNo" value:strSeqNo]; 
[self forColumns:columns andValues:values addColumn:@"GeoLevelCode" value:strGeoLevelCode]; 

NSString *combinedColumns = [columns componentsJoinedbyString:@","]; 
NSString *combinedValues = [values componentsJoinedByString:@","]; 
tmpStr2=[NSString stringWithFormat:@"insert into tblButterflyData(%@) values (%@)", combinedColumns, combinedValues]; 
: 그런 다음 쿼리를 작성하는

- (void)forColumns:(NSMutableArray<NSString *> *)columns 
     andValues:(NSMutableArray<NSString *> *)values 
     addColumn:(NSString *)column 
      value:(NSString *)value { 
    [columns addObject:column]; 
    [values addObject:[NSString stringWithFormat:@"'%@'", value]]; 
} 

: 가독성을 위해서

, 당신은 아마도 같은 헬퍼 방법을 사용하여, 작은 척에 검색어 건설을 중단 할 수 있습니다

이 방법을 사용하면 코드를 훨씬 쉽게 읽을 수 있으며, 열 이름이 일치하지 않는 문제를 방지하고 쿼리 문자열에 '% @'등을 추가하여 유효하지 않은 값을 추적 할 수 있습니다 코드 유지 관리가 훨씬 쉬워집니다.

효율성을 높이기 위해 최적화하는 방법에는 여러 가지가 있지만, 그 전에는 유지 관리가 쉽고 버그가 없어야합니다. 행운을 빕니다!