2016-04-11 4 views
2

Ich habe eine Datenbank mit 10 Tabellen und jeder mit 5 bis 10 Spalten und erwarte nicht mehr als 500 Datensätze für die gesamte Datenbank.Durchsuchen der gesamten SQLite-Datenbank nach einem Schlüsselwort zur Implementierung der Suchfunktion in der Android-App

Ich möchte eine Suchfunktion in der App implementieren, wo ich die gesamte Datenbank nach einem Schlüsselwort durchsuchen und eine benutzerdefinierte Listenansicht für alle Ergebnisse anzeigen.

Ich habe versucht, nach Möglichkeiten zu suchen, dies zu implementieren, aber habe keine Lösung für SQLite in Android gefunden. Es gibt SQL server implementations davon.

Die Art, wie ich es im Moment sehe, besteht darin, eine Abfrage für jede Tabelle zu schreiben und jede Spalte zu durchsuchen und dann das Ergebnis zu filtern, um meine benutzerdefinierte Listenansicht zu füllen.

public Cursor searchDB(String query) { 

return db.query(true, DB_TABLE, 
new String[] { KEY_ROWID, KEY_COLUMN1, KEY_COLUMN2, ... KEY_COLUMN10}, 
KEY_COLUMN1 + " LIKE" + "'%" + query + "%' OR " + 
KEY_COLUMN2 + " LIKE" + "'%" + query + "%' OR " + ... 
KEY_COLUMN10 + " LIKE" + "'%" + query + "%'", 
null, null, null, null, null); 
} 

Schätzen Sie Meinungen zu diesem Thema und jede Hilfe bei der Umsetzung.

Antwort

0

Effektivere denke ich, wäre Abfrage wie:

select KEY_COLUMN1+' '+KEY_COLUMN2+' '+KEY_COLUMN3 from mytable 
where KEY_COLUMN1+' '+KEY_COLUMN2+' '+KEY_COLUMN3 like %pattern% 
1

ich alle Such Zeug als eine Datenbank-Ansicht in die Datenbank

CREATE VIEW [search] AS 
select 't1' as tab, id as id, col1+col2+col3 as key from t1 
union 
select 't2' as tab, id as id, colA+colB+colC as key from t2 

und haben eine einfache Abfrage die finden bewegen würde Ergebnisse

select tab, id from search where key like '%12%' 

Wenn Sie später entscheiden, dass Sie ein zusätzliches Suchfeld oder ein zusätzliches Such-Tabl benötigen Alles, was Sie tun müssen, ist die Datenbankansicht

zu aktualisieren
Verwandte Themen