2016-10-13 1 views
0

Ich habe gerade begonnen, Android SQLite und total neu die APIs und Methoden mit dem Datenbank Helper verwendet zu lernen. Es gibt einige Codefragmente und Tutorials, denen ich folge. Ich würde gerne wissen, welche die korrekte Art ist, die Tabellen und die Datenbank der beiden Codebeispiele zu erstellen.Android Studio Richtiger Weg zum Erstellen von Datenbank und Schema

Codebeispiel 1

public static final String KEY_ID = "ID" ; 
public static final String KEY_FNAME = "FirstName"; 
public static final String KEY_LNAME = "LastName"; 
public static final String KEY_MNAME = "MiddleName"; 

public static final String DATABASE_NAME = "myDb"; 
public static final String DATABASE_TABLE = "myTable"; 
public static final int DATABASE_VERSION =1; 

@Override 
public void onCreate(SQLiteDatabase db){ 
    db.execSQL("CREATE TABLE " + DATABASE_TABLE +"("+ KEY_ID + "TEXT PRIMARY KEY, " + KEY_FNAME + "TEXT,"+ KEY_LNAME + "TEXT,"+KEY_MNAME+ "TEXT)"); 
} 

Ich weiß nicht, warum "TEXT," enthalten sein hat und warum KEY_ID wurde TEXT statt INTEGER erklärt (Diese sind Codes, die ich online gefunden) Getestet es aber hat nicht funktioniert.

CODE SAMPLE 2

public class DatabaseHelper extends SQLiteOpenHelper { 


    public static final String DATABASE_NAME = "student.db"; 
    public static final String TABLE_NAME = "student_table"; 
    public static final String COL_1 = "ID"; 
    public static final String COL_2 = "NAME"; 
    public static final String COL_3 = "SURNAME"; 
    public static final String COL_4 = "MARKS"; 

    public DatabaseHelper(Context context) { 
     super(context, DATABASE_NAME, null, 1); 
     SQLiteDatabase db = this.getWritableDatabase(); 
    } 

    @Override 
    public void onCreate(SQLiteDatabase sqLiteDatabase) { 
     sqLiteDatabase.execSQL("CREATE TABLE " + TABLE_NAME + " (ID INTEGER PRIMARY KEY AUTOINCREMENT, NAME TEXT, SURNAME TEXT, MARKS INTEGER) "); 
    } 

    @Override 
    public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) { 
     sqLiteDatabase.execSQL("DROP TABLE IF EXISTS" + TABLE_NAME); 
     onCreate(sqLiteDatabase); 
    } 
} 

CODE SAMPLE 2 einfacher zu sein scheint für mich zu verstehen. Bisher, was ich verstehe ist, dass

SQLiteOpenHelper verwendet wird, Datenbank und Tabellen zu erstellen und CRUD benötigten Methoden aufrufen zu manipulieren

execSQL() verwendet wird SQL Aussagen

Zwischen den beiden Beispielcodes auszuführen i Online gefunden, welches ist der richtige Weg oder Strukturierung von Code?

Sind beide korrekt? Wenn nicht, wie kann ich es verbessern?

Danke.

+0

Nur eine Anmerkung zu Ihrem 'OnUpgrade'-Code: Wahrscheinlich möchten Sie nicht alle Benutzerdaten löschen und die Datenbank neu erstellen. Sie möchten das Schema basierend auf der Version der Datenbank, die der Benutzer bereits besitzt, gezielt ändern. Und die Versionierung des Schemas behandeln Sie selbst im Anwendungscode. –

Antwort

0

Here Ist Android "offiziellen" Stil zum Erstellen von Schemas. Gehen Sie mit demjenigen, den Sie am meisten verstehen, besonders wenn Sie lernen.

Verwandte Themen