SQLite3

Salve a tutti, ho veramente bisogno del costro aiuto!

Ho un database SQLite dal nome dizionario.sqlite incluso nel mio progetto xcode per iphone.

Questo è il mio codice in cui richiamo il database.



sqlite3 *database;
	NSString *path = [[NSBundle mainBundle] pathForResource:@"dizionario" ofType:@"sqlite"];
	
	if (sqlite3_open([path UTF8String], &database) == SQLITE_OK)
	{
		
		sqlite3_stmt *statement;
		
		if (sqlite3_prepare_v2(database, "SELECT * FROM ita where Mapping=?", -1, &statement, NULL) == SQLITE_OK)
		{
			sqlite3_bind_int(statement, 1, [utftesto.text intValue]);
			if (sqlite3_step(statement) == SQLITE_ROW)
			{
				char *testo = (char *)sqlite3_column_text(statement, 0);
				if (testo!=nil)
					utwtesto.text = [NSString stringWithUTF8String:testo];
				else
					utwtesto.text = @"";
					
			}
			else
			{
				NSLog (@"Parola inesistente");
			}
		}
		else
		{
			NSLog(@"DB: query KO");
			return @"a";
		}
			
		sqlite3_finalize(statement);
		sqlite3_close(database);
	}		



Notate che la query che sto utilizzanto ricerca dentro il Campo Mapping dal campo utftesto.
Es.
Se mapping=125456 come posso dirgli di restituirmi il valore anche se il campo utftesto.text=12

In parole povere voglio un funzionamento simile quello di spootlight di leopard restituisce i valori man mano che scrivi.

Puoi usare le wildcard % o _
Ad esempio SELECT * FROM ita where Mapping=?____ (con 4 _ ) ritornerà tutti i campi con mapping=[utftesto.text intValue] e altre 4 cifre, tipo (se utftesto.text = 12)

mapping=121111
mapping=121112

mapping=129999

altrimenti per avere un qualsiasi numero di cifre usa la %: SELECT * FROM ita where Mapping=?%

e funzionerà da
mapping=12
a
mapping=1299999999999999999…

Un’altra cosa, voglio creare due tasti >(destra) e <(sinistra) per spostarmi tra i record che codice bisogna usare?

in mysql c’è la clausola LIMIT: MySQL :: MySQL 5.5 Reference Manual :: 7.2.18 LIMIT Optimization

in sqlite3 non lo so

Sai che non mi va la sintassi:

SELECT * FROM ita where Mapping=?%