query sqlite error out of memory xcode

匿名 (未验证) 提交于 2019-12-03 08:54:24

问题:


I have an error. Problem with prepare statement: out of memory. How to fix it? Other queries are working normally. I do not know what can be. Maybe this is a problem -(TelefonDetail *)telefonDetails:(int)iDMob ??

-(TelefonDetail *)telefonDetails:(int)iDMob  {  TelefonDetail *retvalTelefon = nil;  NSString *ZaprosTelefons = @"SELECT iDMob , marka, model,wifi, os,   razmeri,Display,Camera,Stoimos,imageTel,opisCrat FROM MobTele WHERE iDMob=1";  sqlite3_stmt *statement1;  if (sqlite3_prepare_v2(_database, [ZaprosTelefons UTF8String], -1, &statement1, nil)     != SQLITE_OK) {     NSLog(@"Problem with prepare statement:  %s", sqlite3_errmsg(_database));  }  else{   while (sqlite3_step(statement1) == SQLITE_ROW) {         int iDMob = sqlite3_column_int(statement1, 0);         char *Marka = (char *) sqlite3_column_text(statement1, 1);         char *Model = (char *) sqlite3_column_text(statement1, 2);         char *Wifi = (char *) sqlite3_column_text(statement1, 3);         char *OS = (char *) sqlite3_column_text(statement1, 4);         char *Razmeri = (char *) sqlite3_column_text(statement1, 5);         char *Display = (char *) sqlite3_column_text(statement1, 6);         char *Camera = (char *) sqlite3_column_text(statement1, 7);         char *Stoimos = (char *) sqlite3_column_text(statement1, 8);         Byte *imgTel = (Byte *) sqlite3_column_blob(statement1, 9);         NSString *marka = [[NSString alloc] initWithUTF8String:Marka];         NSString *model = [[NSString alloc] initWithUTF8String:Model];         NSString *wifi = [[NSString alloc] initWithUTF8String:Wifi];         NSString *os = [[NSString alloc] initWithUTF8String:OS];         NSString *razmeri = [[NSString alloc] initWithUTF8String:Razmeri];         NSString *display = [[NSString alloc] initWithUTF8String:Display];         NSString *camera = [[NSString alloc] initWithUTF8String:Camera];         NSString *Stoimost = [[NSString alloc] initWithUTF8String:Stoimos];         int len = sqlite3_column_bytes(statement1, 9);         NSData *imgData = [[NSData alloc] initWithBytes:imgTel length:len];      retvalTelefon = [[TelefonDetail alloc]initWhithIDMob:iDMob marka:marka model:model wifi:wifi os:os razmeri:razmeri display:display camera:camera Stoimost:Stoimost imegeTel:imgData]; }     sqlite3_finalize(statement1); } return retvalTelefon; } 

回答1:

The "out of memory" error is often a misleading error message caused by trying to use a database without having opened it first (or if you accidentally set the sqlite3 database pointer to NULL). For example:

sqlite3 *db = NULL; sqlite3_stmt *statement; int rc;  // deliberately did not open database -- ERROR  // now try to use SQLite without opening database  if ((rc = sqlite3_prepare_v2(db, "select * from test", -1, &statement, NULL)) != SQLITE_OK)     NSLog(@"rc=%d errmsg=%s", rc, sqlite3_errmsg(db)); 

This will generate a return code (rc) of 21, SQLITE_MISUSE. And the error message is a misleading "out of memory":

 2014-05-11 17:36:22.035 MyApp[19942:60b] rc=21 errmsg=out of memory 


易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!