- Registriert
- 24.02.11
- Beiträge
- 14
Hallo Leute ich benötige dringend Hilfe!
Ich habe eine Umkreissuche in einer App... Leider crasht diese bei der SQLite - Abfrage und ich finde den Fehler nicht...
Als PLZ-DB habe ich die geodb implementiert...
Hier mal mein Code
hier die Ausgabe aus dem debugger:
select plz (6368.000000 * sqrt(2*(1-cos(RADIANS(lat))*cos(-1658968064)*(sin(RADIANS(lon))*sin(1069736098)+cos(RADIANS(lon))*cos(1574645077))-sin(RADIANS(lat))*sin(1072355443)))) AS DISTANCE FROM geo_data WHERE 0.838922 * sqrt(2*(1-cos(RADIANS(lat))*cos(-1658968064)*(sin(RADIANS(lon))*sin(1069736098)+cos(RADIANS(lon))*cos(0))-sin(RADIANS(lat))*sin(1085857792)))<=5 ORDER BY DISTANCE
2011-06-13 13:08:43.159 xxx[5952:307] *** Assertion failure in -[ImmoParseOperation initWithData:delegate:], /Users/wolffre/Documents/xxx/Classes/ImmoParseOperation.m:142
2011-06-13 13:08:43.234 xxx[5952:307] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Error preparing statement'
Es muss wohl an der Abfrage liegen, aber wo genau???
Was mache ich falsch?
Ich habe eine Umkreissuche in einer App... Leider crasht diese bei der SQLite - Abfrage und ich finde den Fehler nicht...
Als PLZ-DB habe ich die geodb implementiert...
Hier mal mein Code
Code:
NSLog(@"plz umkreis berechnen");
float PIx = 3.141592653589793;
float R = 6368;
double lat, lon;
lat = [[lolat objectAtIndex:0]floatValue];
lon = [[lolat objectAtIndex:1]floatValue];
double lati, longi;
lati = lat * PIx / 180;
longi = lon * PIx / 180;
NSLog(@"%d %d", lati, longi);
//
//
sqlite3_stmt *ukstatement = nil;
NSString * plzQueryString = [NSString stringWithFormat:@"select plz (%f * sqrt(2*(1-cos(RADIANS(lat))*cos(%d)*(sin(RADIANS(lon))*sin(%d)+cos(RADIANS(lon))*cos(%d))-sin(RADIANS(lat))*sin(%d)))) AS DISTANCE FROM geo_data WHERE %f * sqrt(2*(1-cos(RADIANS(lat))*cos(%d)*(sin(RADIANS(lon))*sin(%d)+cos(RADIANS(lon))*cos(%d))-sin(RADIANS(lat))*sin(%d)))<=5 ORDER BY DISTANCE",R,lati,longi,longi,lati,R,lati,longi,longi, lati];
NSLog(@"%@",plzQueryString);
if (sqlite3_prepare_v2(db,[plzQueryString UTF8String],-1,&ukstatement,NULL)!=SQLITE_OK)NSAssert1(0,@"Error preparing statement",sqlite3_errmsg(db));
else{
while (sqlite3_step(ukstatement)==SQLITE_ROW){
//NSString * Data = [NSString stringWithUTF8String:(char*)sqlite3_column_text(ukstatement, 0)];
//NSLog(@"plz %@", Data);
}
sqlite3_finalize(ukstatement);
}
return self;
}
hier die Ausgabe aus dem debugger:
select plz (6368.000000 * sqrt(2*(1-cos(RADIANS(lat))*cos(-1658968064)*(sin(RADIANS(lon))*sin(1069736098)+cos(RADIANS(lon))*cos(1574645077))-sin(RADIANS(lat))*sin(1072355443)))) AS DISTANCE FROM geo_data WHERE 0.838922 * sqrt(2*(1-cos(RADIANS(lat))*cos(-1658968064)*(sin(RADIANS(lon))*sin(1069736098)+cos(RADIANS(lon))*cos(0))-sin(RADIANS(lat))*sin(1085857792)))<=5 ORDER BY DISTANCE
2011-06-13 13:08:43.159 xxx[5952:307] *** Assertion failure in -[ImmoParseOperation initWithData:delegate:], /Users/wolffre/Documents/xxx/Classes/ImmoParseOperation.m:142
2011-06-13 13:08:43.234 xxx[5952:307] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Error preparing statement'
Es muss wohl an der Abfrage liegen, aber wo genau???
Was mache ich falsch?