2017-09-15 37 views
-8

我正在Objective-C中創建應用程序。EXC_BAD_ACCESS插入到查詢中的Objective-C中的異常

在這個應用程序中,我想從數據庫表中獲取數據。

在這個表中有225列,我想從目標c代碼插入數據。

當我插入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

您是否認爲重讀此書後,任何人都可以理解這種情況? – user5014677

回答

0

首先,您需要識別使用堆棧跟蹤哪個庫或某段代碼實際上是罪魁禍首。如果[NSString stringWithFormat:...]行代碼是問題,那麼您將需要檢查所有參數是否有效,您可能會有其中一個包含意外數據。

對於可讀性的原因,你可能要打破你的查詢構造成更小的卡盤,可能使用一個輔助方法,如:

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

然後構建查詢:

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]; 

這樣做可以讓你的代碼更容易閱讀,避免了在你的查詢字符串中有不匹配的列名稱數量和'%@',....的問題,可以幫助你跟蹤哪些值可能無效並使您的代碼更容易維護。

有多種方法可以優化它以提高效率,但在此之前,您需要使其易於維護和無缺陷。祝你好運!