1. Nimm jetzt an unserem 2. ADVENT-Gewinnspiel teil - Alle Informationen findest Du hier!

SQLite Abfrage

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von lol4it, 06.06.2012.

  1. lol4it, 06.06.2012 #1
    lol4it

    lol4it Threadstarter Neuer Benutzer

    Beiträge:
    2
    Erhaltene Danke:
    0
    Registriert seit:
    06.06.2012
    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: 06.06.2012
  2. Sentenza, 06.06.2012 #2
    Sentenza

    Sentenza Erfahrener Benutzer

    Beiträge:
    224
    Erhaltene Danke:
    65
    Registriert seit:
    15.08.2011
    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: 06.06.2012
  3. 19sheriff93, 07.06.2012 #3
    19sheriff93

    19sheriff93 Junior Mitglied

    Beiträge:
    40
    Erhaltene Danke:
    0
    Registriert seit:
    23.02.2012
    Habe zurzeit genau das gleiche problem, allerdings noch keine wirkliche lösung... :(
     
  4. Sentenza, 07.06.2012 #4
    Sentenza

    Sentenza Erfahrener Benutzer

    Beiträge:
    224
    Erhaltene Danke:
    65
    Registriert seit:
    15.08.2011
    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.
     
  5. Tom299, 08.06.2012 #5
    Tom299

    Tom299 Android-Experte

    Beiträge:
    602
    Erhaltene Danke:
    120
    Registriert seit:
    31.08.2011
    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();			
    		}	
    
    
     

Diese Seite empfehlen