2016-11-19 4 views
0

Ich bin verwirrt darüber, wie man eine SQL Lite-Datenbank in Android Studio zu betreiben. Ich möchte, dass der Benutzer Elemente in einer Datenbank kontinuierlich hinzufügen und durchsuchen kann. Die Verwirrung, die ich habe, ist, dass es scheint, dass die meisten Anfänger-Tutorials zu diesem Thema eine Datenbank in der MainActivity erstellen werden, wenn die "App" ausgeführt wird, was mich zu der Annahme verleitet, dass eine neue Datenbank von Grund auf neu erstellt wird Informationen (oder in Ruhe gelassen und abgefragt). Zum Beispiel in einem Klassennamen DatabaseHelper habe ich die Schnipsel:SQL Lite Datenbank persistenten Speicher für Android

public DatabaseHelper(Context context) { 
     super(context, DATABASE_NAME, null, 1); 
    } 

    @Override 
    public void onCreate(SQLiteDatabase db) { 
     db.execSQL(CreateTable1String); 
     db.execSQL(CreateTable2String); 
    } 
    ... // Then methods to add, query etc. 

Und dann im Haupt:

public class MainActivity extends Activity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     DatabaseHelper db = new DatabaseHelper(this); 

... // Then do stuff with the database 

} 

Keine Erkenntnisse in dem, was ich bin falsch versteht sehr geschätzt.

Antwort

1

Nein, die Datenbank wird nicht jedes Mal erstellt, wenn Sie dieses Snippet ausführen.

In Ihrem Beispiel ist es die onCreate-Methode, die die SQL-Skripts ausführt, die Tabellen erstellen. Aber im gebuchten Code gibt es keinen Aufruf für diese Methode. Das ist kein Zufall. Sie rufen diese Methode nicht explizit auf, Android tut dies einmal, wenn DatabaseHelper zum ersten Mal instanziiert wird.

In dem veröffentlichten Code gibt es eine new DatabaseHelper(this);. Im Gegensatz zu dem, was Sie angenommen haben, bedeutet dies nicht, dass ein Anruf an onCreate erfolgt. Erstellen einer Instanz dieser Klasse und Aufruf der onCreate Methode sind sehr unterschiedliche Dinge.

Verwandte Themen