SQLite Abfrage

L

lol4it

Neues Mitglied
0
Hallo zusammen,

ich befasse mich seit einigen wochen mit android applikationen,
jedoch versteh ich nicht wie ich eine SQLite datenbank auslesen kann und die daten zb in eine listview einfügen. überall finde ich nur tutorials, die beschreiben wie man eine datenbank erstellt und dort etwas einträgt..

ich hab bereits die datenbank.
wo muss ich sie reinkopieren?
wie frage ich sie mit java ab?

vielen dank für die hilfe im voraus, ich bin langsam am verzweifeln.

lol4it

EDIT: select name from namensliste where ort="Berlin"
würde reichen. einfach eine simple abfrage
 
Zuletzt bearbeitet:
Hi, ich habe mich da auch vor kurzem durchgefuchst. Mir hat das folgende Wikibook viel geholfen. Wichtig ist die abgeleitete Klasse von SQLiteOpenHelper, damit erzeugt man die Datenbank und bekommt den Zugriff. (die Empfehlungen, die Parameter aus XML-ressourcen zu laden, haben mich am Anfang eher verwirrt, braucht man nicht, würde ich weglassen. Das ist eher sinnvoll wenn man dann wirklich ein Projekt umsetzt). Dann solltest du dir die Methoden von SQLiteDatabase anschauen, die du brauchst, ich weiß auch nicht im Detail was es da alles gibt, für mich waren bislang .execSQL, .query, .insert besonders nützlich und hilfreich.

Zusätzlich nich eine längere Anleitung, auf die wohl jeder Anfänger derzeit früher oder später stößt, habe ich mir bislang allerdings nur teilweise angesehen, aber vielleicht nützt sie dir etwas.
 
Zuletzt bearbeitet:
Habe zurzeit genau das gleiche problem, allerdings noch keine wirkliche lösung... :(
 
Wie gesagt, Wikibook lesen... aber gut, hier ein Beispiel. Meine App (noch nicht fertig) soll Termine verwalten, und hier werden die Termine aus der SQLite Datenbank gelesen und angezeigt:

Code:
        SQLiteOpenHelper db = new TerminDatabaseHelper(this);
        SQLiteDatabase verbindung = db.getReadableDatabase();
        Cursor tabTermin = 
            verbindung.query("termine", 
                             new String[] {"name","date"}, 
                             "", 
                             null, 
                             null, 
                             null, 
                             "date asc,name");
        
        TerminArray = new View[tabTermin.getCount()];
        tabTermin.moveToFirst();
        for (int i = 0; i < tabTermin.getCount(); i++) {
            String tname = tabTermin.getString(0);
            long tdate = tabTermin.getLong(1);
            tabTermin.moveToNext();
            TerminArray[i] = terminAnzeigen(tname,tdate);
        }

Die Query anweisung entspricht im Prinzip einem Statement der Art "SELECT name,date FROM termine ORDER BY date asc,name". Wie genau Query zu gebrauchen ist, zeigt euch Eclipse an - einfach mit dem Mauszeiger drauf zeigen. Wie ihr eure SQLiteOpenHelper Klasse ableiten könnt (so wie meine TerminDatabaseHelper) erfahrt ihr im Wikibook.
 
Ich machs immer ungefähr so:

In meiner DBHelper-Klasse habe ich eine open-Methode, die ich aber nur noch intern nutze und z.B. eine query-Methode zum abfragen:
Code:
    private static String DB_PATH = "/data/data/de.test/databases/";
    public static String DB_NAME = "my.test.db";

    public void openDataBase() throws SQLException{
    	//Open the database
        String myPath = DB_PATH + DB_NAME;
    	dataBase = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READWRITE);
    }

	public Cursor executeQuery(String sql) {
		if (dataBase == null) {
			openDataBase();
		}
		else if (!dataBase.isOpen()) {
			openDataBase();
		}
		return dataBase.rawQuery(sql, null);
	}

Wie man sieht kann ich meine Query direkt ausführen, die DB wird automatisch geöffnet, sollte sie noch nicht geöffnet sein.

Die Abfragen aus der Activity gehen dann ganz einfach:
Code:
String sql = "Select * from user"

		System.out.println(sql);

		Cursor c = dbHelper2.executeQuery(sql);		
		if (c != null) {
			listUser.clear();
			if (c.moveToFirst()) {
				while (!c.isAfterLast()) {
					String sName = c.getString(c.getColumnIndex(User.DB_NAME));
					}

					// User
					User user = new User();
					user.setName(sName);
					
					listUser.add(user);
					
					c.moveToNext();
				}
			}
			c.close();			
		}
 

Ähnliche Themen

R
Antworten
6
Aufrufe
1.012
swa00
swa00
B
Antworten
3
Aufrufe
1.307
swa00
swa00
Zurück
Oben Unten