Reputation:
In the code below, I am connecting to an SQLite Database, the SELECT query didn't work.
I hope you can help me.
Thanks
if(sqlite3_open([databasePath UTF8String], &database) == SQLITE_OK) {
// Setup the SQL Statement and compile it for faster access
const char *sqlStatement = "select name,score from game Where name='interclock'";
sqlite3_stmt *compiledStatement;
if(sqlite3_prepare_v2(database, sqlStatement, -1, &compiledStatement, NULL) == SQLITE_OK) {
// Loop through the results and add them to the feeds array
//while(sqlite3_step(compiledStatement) == SQLITE_ROW) {
if(sqlite3_step(compiledStatement) == SQLITE_ROW) {
// Read the data from the result row
NSString *aName =[NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 1)];
NSString *aScore =[NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 2)];
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Sonuç" message:[NSString stringWithFormat:@"Oyun adı %s Skor:%s",aName,aScore]
delegate:self cancelButtonTitle:@"OK" otherButtonTitles: nil];
[alert show];
//NSString *aName = [NSString stringWithString:(NSString *)sqlite3_column_text(compiledStatement, 2)];
//NSString *aScore = [NSString stringWithString:(NSString *)sqlite3_column_text(compiledStatement, 3)];
// Create a new animal object with the data from the database
DatabaseClass *dbOBJ = [[DatabaseClass alloc] initWithName:aName score:aScore];
// Add the animal object to the animals Array
[scores addObject:dbOBJ];
[dbOBJ release];
} else {
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error" message:@"SQL Query Dont Work"
delegate:self cancelButtonTitle:@"OK" otherButtonTitles: nil];
[alert show];
}
}
// Release the compiled statement from memory
sqlite3_finalize(compiledStatement);
} else {
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error" message:@"No Connection"
delegate:self cancelButtonTitle:@"OK" otherButtonTitles: nil];
[alert show];
}
Upvotes: 2
Views: 8234
Reputation: 1
It could be correct depending on what column you want to get. In this example, I think that the table of the database contain 3 columns : id, aName, and aScore. The problem is not there but here:
if(sqlite3_step(compiledStatement) == SQLITE_ROW) {
Verify that your compiledStatement
returns a good value.
Upvotes: 0
Reputation: 4262
you should get path like this;
NSString *path = [[NSBundle mainBundle]pathForResource:@"sarkiSozleri"ofType:@"sqlite"];
Upvotes: 0
Reputation: 6263
This is incorrect
NSString *aName =[NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 1)];
NSString *aScore =[NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 2)];
must be
NSString *aName =[NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 0)];
NSString *aScore =[NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 1)];
Upvotes: 3