Vorhandene SQL-Datenbank einfügen, erweitern, abfragen

  • 9 Antworten
  • Letztes Antwortdatum
S

SashM

Neues Mitglied
1
Hallo zusammen,

ich habe gerade mit der Android Entwicklung begonnen und möchte meine erste App realisieren.
Der Ablauf: Eine bereits bestehende Datenbank mit Einträgen, aus der ausgelesen werden soll. Einmal per Zufall und einmal per Spinner.
Es soll aber auch möglich sein, Einträge zu speichern. Dazu würde ich eine neue Tabelle zur bereits bestehenden Datenbank hinzufügen.

Wie setzt man sowas am Besten um?
Ich habe eine Datenbank mit Valentina erstellt und würde diese über den assets-Ordner einbinden und in meinem DBHelper eine neue Tabelle erstellen (womöglich in der upgrade-Methode?).
Ich weiß nur nicht, ob das so funktioniert.

Hier ein Tutorial zum einfügen einer existierenden Datenbank:
Using your own SQLite database in Android applications | ReignDesign

Hat jemand Vorschläge für so ein Szenario?

Besten Dank im Voraus für Eure Hilfe!
 
  • Danke
Reaktionen: markus.tullius
Um neue Werte zu speichern, schreibt man einen neuen Eintrag in eine Tabelle. Für jeden neuen Eintrag eine neue Tabelle anzulegen, macht kein Sinn.

Zu Datenbanken auf Androidgeräten ist SQLite die erste Wahl. Gibt den Begriff Datenbanken in die Suche ein, da dürftest du massig Treffer finden.

Und danke für den Link, der ist echt interessant. :thumbup:
 
Zuletzt bearbeitet:
Soweit bin ich schon. Aber wo genau erstelle ich die neue Tabelle?
Gibts es vllt einen Beispielcode für diese Umsetzung?
Ich habe gelesen, dass man in der upgrade-Methode des DBHelpers die neue Tabelle erstellen muss.

Danke!
 
Ich habe jetzt die vorhandene, mit Daten gefüllte Datenbank über den SQLiteAssethelper eingebunden.

https://github.com/jgilfelt/android-sqlite-asset-helper

sehr simpel die ganze Sache!

Nur mit dem Erweitern der Datenbank durch Erstellen einer neuen Tabelle bin ich noch nicht vorangekommen.

Falls jemand was weiß...bin für jede Hilfe dankbar!!
 
Mir ist immer noch nicht ganz klar, für was du eine zweite Tabelle brauchst.

Normalerweise schreibt man beim Speichern die Einträge in die gleichen Tabelle, aus der man sie auch geladen hat. Außer man hat ein komplexere Datenstruktur, die mehrere Tabellen erfordert (Z.B. Normalisierung).

SQL: 1.3 Tabellen

Upgrade ist bestimmt nicht zum Speichern da. SQLiteOpenHelper | Android Developers

Um besten du schaust dir vorher SQL an, das ist wirklich nicht schwer. Damit du weiß, welche Methoden du wirklich brauchst. Und sonst benutze SharedPreference. Storage Options | Android Developers
 
Aus der ersten Tabelle werden vorgegebene Sätze geladen, die u.a. per Zufall und durch bestimmte Auswahl angezeigt werden.
In die zweite Tabelle sollen eigens erstellte Sätze (die man in einer separaten Activity anlegen kann) gespeichert werden.
Deswegen 2 Tabellen - das sind 2 verschiedene paar Schuhe. Die können nicht miteinander vermischt werden.
Und die zweite Tabelle soll auch in einer Activity aufgerufen werden können, wo nur die selbst erstellten Sätze angezeigt werden.


Danke für die Links!:thumbup:

Der ursprüngliche Beitrag von 00:38 Uhr wurde um 01:01 Uhr ergänzt:

Das Problem ist, das die erste Tabelle neben den Sätzen und der ID noch ein weiteres Feld "Name" enthält und die erstellten Sätze keine Namen besitzen.

Wenn es möglich ist, anschließend nur auf die erstellten Sätze zugreifen zu können und diese in eine ListView zu packen, dann könnte ich alles in einer Tabelle speichern.
 
Du solltest dich vorher mal gründlich über SQL, ER-Modell und Normalisierung beschäftigen. Alles was du hier schreibst ergibt, aus Sicht eines Datenbanklers, null komma garkein sinn!

In die zweite Tabelle sollen eigens erstellte Sätze (die man in einer separaten Activity anlegen kann) gespeichert werden.
Deswegen 2 Tabellen - das sind 2 verschiedene paar Schuhe. Die können nicht miteinander vermischt werden.
Wieso sind das zwei Paar schuhe? Wenn die Tabellen GENAU das selbe speichern sollen, nur dass manche "manuell" hinzugefügt worden sind und andere schon vorhanden waren?! Das ergibt kein Sinn! (Im Sinne vom erwähnten Normalisieren). Eine einfache trennung wäre mit einem weiteren Attribut STATIC (1/0 oder true/false) gelöst.

Das Problem ist, das die erste Tabelle neben den Sätzen und der ID noch ein weiteres Feld "Name" enthält und die erstellten Sätze keine Namen besitzen.
Auch hier, wo ist das problem? Ich erstelle doch nicht zwei identische Tabellen, nur weil bei einem das Attribut "Name" nicht vorkommt. Einfach dieses nicht setzten oder auf null (meinetwegen auch ein Platzhalter alá "NOT AVAILABLE").

Gruß
 
  • Danke
Reaktionen: amfa
Hi Community,

ich habe Schwierigkeiten mit einer SQL-Abfrage. Aus einer Datenbank will ich bestimmte Daten anzeigen lassen, die alle die gleiche ID haben und diese ID soll mit einem Datensatz, der ebenfalls aus Datenbank ist und ein paar Zeilen davor in ein TextView eingefügt wird, übereinstimmen.
Also quasi: Alle Datensätze, die die gleiche ID haben wie der Textview sollen angezeigt werden.
Die beiden ID's kommen aus 2 unterschiedlichen Tabellen.

Leider bekomme ich das mit meinen kümmerlichen SQL-Kenntnissen nicht hin.
Ich hoffe jemand hat Ratschläge und kann helfen.
Vielen Dank schonmal!
 
Ich will nur bestimmte Datensätze anzeigen lassen, die mit der ID des zuvor übergebenen Intents (der Intent wird in ein TextView eingefügt) übereinstimmen. Die Tabelle enthält _id, Name und ein weiteres Feld.
Jemand eine Idee??? Danke für jede Hilfe!!
 
Zuletzt bearbeitet:
Zurück
Oben Unten