R
Rebell306
Neues Mitglied
- 0
Hi Leute
Vorweg, grosses Lob an eure Seite. Ich bin seit 5 Tagen am Android app "Programmieren"
hat mir schon sehr geholfen.
Nun bin ich an einem Punkt angelangt, an dem ich einfach nicht mehr durchblicke. Auch nicht schwer, wenn ich zwei Tage an einem Problem sitze
und ich hoffe ich kann es noch einigermassen beschreiben.
Ich habe eine SQLite Datenbank:
Tabelle:
ZGB
Column:
int = id;
String = NR;
String = Titel;
String = Text;
String = Verweis:
Diese Datebank kann ich ohne grosse Umstände mittels SimpleCursorAdapter komplett an eine ListView ausgeben. Die Suche kann ich auch mittels SQL Query performen, jedoch nur auf eine einzelne Spezifische Tabelle.
(cs = EditText input)
Somit bekomme ich die Einträge welche in der Columne NR hinterlegt sind zurück. Titel, Text und Verweis bleiben aussen vor.
Mein erster Lösungansatz war, den cursor auf null zu prüfen und diesen anschliessend mittels Query in nächste Columne zu schicken. Dies funktioniert gar nicht schlecht, mit einem Problem: Sollte die erste Query nicht null sein, so wird Titel, Text und Verweis nicht mehr geprüft.
Nun bin ich soweit, dass ich eine zweite Refrenz Tabelle erstellt habe:
Tabelle:
ZGBHelper
Column:
Int = id;
String = text;
Gefüllt:
Int = 1
String = String von - ZGB NR (id1)
Int = 1;
String = String von - ZGB Titel (id1)
Int = 1;
String = String von - ZGB Text (id1)
Int = 1;
String = String von - ZGB Verweis (id1)
...
Int = 2;
String = String von - ZGB NR (id2)
Int = 2;
String = String von - ZGB Titel (id2)
...
Wobei ich nun mit ersten Cursor die Tabelle ZGBHelper Columne: Text durchsuchen und mir die ID ausgeben kann. Mit dieser ID kann ich anschliessend aus der ZGB Tabelle meine Einträge auslesen und anzeigen lassen. Dies funktioniert, da der SimpleCursorAdapter jedoch keine .add Funktion besitzt, wird der Adapter bei jedem Query neu geladen und die letzte Query bleibt drinnen hängen. Die vorherigen Einträge werden knallhart überschreiben
Gibt es eine Query die über alle Columns sucht. Muss ich ein FTS3 Virtual Table realisieren für meine lächerlichen 900 Einträge, damit ich die möglichkeit zur Text Suche über alle Columns erhalte?
Ich bedanke mich bei allen, welche diesen Thread gelesen habe und bin über jeden Ideen Ansatz dankbar. Ich blick`s nich mehr
Freundliche Grüsse
Der ursprüngliche Beitrag von 20:22 Uhr wurde um 21:47 Uhr ergänzt:
So, hab den Baum vor lauter Wald nicht mehr gesehen und komm mir nun wirklich ein wenig dämlich vor. nunja,... Die Lösung lautet natürlich verbinde deine Query mit einer OR
gesagt getan und es haut
Thread kann meinetwegen gelöscht werden, ich geh nach der peinlichen Nummer hier erstmal rauchen :blushing:
Vorweg, grosses Lob an eure Seite. Ich bin seit 5 Tagen am Android app "Programmieren"
Nun bin ich an einem Punkt angelangt, an dem ich einfach nicht mehr durchblicke. Auch nicht schwer, wenn ich zwei Tage an einem Problem sitze
Ich habe eine SQLite Datenbank:
Tabelle:
ZGB
Column:
int = id;
String = NR;
String = Titel;
String = Text;
String = Verweis:
Diese Datebank kann ich ohne grosse Umstände mittels SimpleCursorAdapter komplett an eine ListView ausgeben. Die Suche kann ich auch mittels SQL Query performen, jedoch nur auf eine einzelne Spezifische Tabelle.
Code:
Z.B. rawQuery( "SELECT * FROM ZGB where NR like '%" + cs.toString() + "%' " , null );
Somit bekomme ich die Einträge welche in der Columne NR hinterlegt sind zurück. Titel, Text und Verweis bleiben aussen vor.
Mein erster Lösungansatz war, den cursor auf null zu prüfen und diesen anschliessend mittels Query in nächste Columne zu schicken. Dies funktioniert gar nicht schlecht, mit einem Problem: Sollte die erste Query nicht null sein, so wird Titel, Text und Verweis nicht mehr geprüft.
Code:
SQLiteDatabase db = DBHelp.getReadableDatabase();
Cursor cursor = db.rawQuery
(
"SELECT * FROM where NR like '%" + cs.toString() + "%'",
null
);
If ( cursor.isAfterLast() )
{
Cursor cursor1 = db.rawQuery
(
"SELECT * FROM ZGB whee NR like '%" + cs.toString() + "%'",
null
);
return cursor1;
}
return cursor;
Tabelle:
ZGBHelper
Column:
Int = id;
String = text;
Gefüllt:
Int = 1
String = String von - ZGB NR (id1)
Int = 1;
String = String von - ZGB Titel (id1)
Int = 1;
String = String von - ZGB Text (id1)
Int = 1;
String = String von - ZGB Verweis (id1)
...
Int = 2;
String = String von - ZGB NR (id2)
Int = 2;
String = String von - ZGB Titel (id2)
...
Wobei ich nun mit ersten Cursor die Tabelle ZGBHelper Columne: Text durchsuchen und mir die ID ausgeben kann. Mit dieser ID kann ich anschliessend aus der ZGB Tabelle meine Einträge auslesen und anzeigen lassen. Dies funktioniert, da der SimpleCursorAdapter jedoch keine .add Funktion besitzt, wird der Adapter bei jedem Query neu geladen und die letzte Query bleibt drinnen hängen. Die vorherigen Einträge werden knallhart überschreiben
Code:
SQLiteDatabase db = DBHelp.getReadableDatabase();
Cursor cursor = db.rawQuery
(
"SELECT _id FROM ZGBHelper where text like '%" +
cs.toString() +
"%'",
null
);
cursor.moveToLast();
Cursor cursor1 = db.rawQuery
(
"SELECT * FROM ZGB where _id = " +
cursor.getString(0),
null
);
return cursor1;
Ich bedanke mich bei allen, welche diesen Thread gelesen habe und bin über jeden Ideen Ansatz dankbar. Ich blick`s nich mehr
Freundliche Grüsse
Der ursprüngliche Beitrag von 20:22 Uhr wurde um 21:47 Uhr ergänzt:
So, hab den Baum vor lauter Wald nicht mehr gesehen und komm mir nun wirklich ein wenig dämlich vor. nunja,... Die Lösung lautet natürlich verbinde deine Query mit einer OR
Thread kann meinetwegen gelöscht werden, ich geh nach der peinlichen Nummer hier erstmal rauchen :blushing:
Code:
SQLiteDatabase db = DBHelp.getReadableDatabase();
Cursor cursor = db.rawQuery(
"SELECT * FROM " +
TABLE_NAME +
" WHERE " +
NR + " LIKE '%" + cs.toString() + "%' " + " OR " +
Titel +" LIKE '%" + cs.toString() + "%' " + " OR " +
Text+" LIKE '%" + cs.toString()+"%'" + " OR " +
Verweis +" LIKE '%"+ cs.toString() + "%'",
null
);
Zuletzt bearbeitet: