2012-06-08 27 views
5

Tôi đang sử dụng cơ sở dữ liệu sqlite cho ứng dụng iphone. nhưng sự cố của nó trên đường "while while" trong khi truy xuất dữ liệu từ cơ sở dữ liệu đôi khi.EXC_BAD_ACCESS bằng sqlite_step (tuyên bố)

-(void)GetMethod 
{ 

    NSString *query = [[NSString alloc] initWithFormat:@"SELECT * FROM errorlogs"]; 
    sqlite3_stmt *statement;  
    if (sqlite3_prepare_v2(database, [query UTF8String],-1, &statement, nil) == SQLITE_OK) 
    { 
     while (sqlite3_step(statement) == SQLITE_ROW) **// EXC_BAD_ACCESS ON THIS LINE** 
     { 
      char *uid1 = (char *)sqlite3_column_text(statement, 0); 
      NSString *uid = [NSString stringWithFormat:@"%s",uid1]; 
     } 
    } 
    sqlite3_finalize(statement); 
} 

lý do tại sao tôi nhận được vòng lặp EXC_BAD_ACCESS này trong khi đó.

enter image description here Cảm ơn.

Trả lời

2

Hoặc sqlite3_step(statement) hoặc SQLITE_ROW không được khởi tạo, hoặc đã được phát hành. Khi nó chạy kiểm tra bình đẳng trên đối tượng không tồn tại, nó ném EXE_BAD_ACCESS.

Bạn có trả lại bất kỳ hàng nào không?

+0

Cảm ơn bạn đã trả lời. Tôi chỉ sử dụng mã trên được đề cập trong câu hỏi của tôi. vì vậy sqlite3_step (statement) được khởi tạo và sqlite_row là một hằng số. Và chúng chưa được phát hành. – iDilip

+0

'SELECT * FROM errorlogs' có trả về bất kỳ hàng nào không? Nếu các bản ghi lỗi trống, bạn có thể so sánh với không có gì, điều này sẽ gây ra lỗi. –

3

Hãy thử sử dụng khung công tác FMDB, nó đã giúp tôi rất nhiều trong dự án của tôi.
Đây là liên kết: https://github.com/ccgus/fmdb
Cho nó một cái nhìn nếu bạn có thể;)

+0

Cơ sở dữ liệu có khác biệt không? nếu có, tôi không thể di chuyển từ cơ sở dữ liệu này sang cơ sở dữ liệu khác cho lỗi này. – iDilip

+0

không, nó chỉ là một trình bao bọc để đơn giản hóa mã hóa, đó là khá nhiều. cộng với siêu dễ sử dụng. Một điều cố gắng cho phép nszombies theo dõi lỗi của bạn, chỉ cần nhấn alt + cmd + r và có một hộp kiểm cho biết "Enable Zombie Objects". –

+0

NSZombie được bật trong dự án của tôi. nhưng nó vẫn đang ném EXC_BAD_ACCESS trên dòng đó. – iDilip