2016-10-13 46 views
0

我剛開始學習Android的SQLite,並且完全是新增了與Database Helper一起使用的API和方法。有一些我正在遵循的代碼片段和教程。我想知道哪個是創建兩個代碼示例的表和數據庫的正確方法。Android Studio創建數據庫和架構的正確方法

代碼示例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)"); 
} 

我不知道爲什麼"TEXT,"已被列入爲什麼KEY_ID被宣佈TEXT代替INTEGER我發現這些代碼在線)測試,但沒有工作。

代碼示例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); 
    } 
} 

代碼示例2似乎更容易讓我明白了。 到目前爲止,我的理解是,

SQLiteOpenHelper用於創建數據庫和表,並呼籲操縱CRUD

execSQL()需要的方法被用來執行SQL語句

兩個示例代碼之間的I在網上找到,這是正確的方式或代碼結構?

都是正確的嗎?如果不是,我該如何改進?

謝謝。

+0

只需在'onUpgrade'代碼中註釋:您可能不想刪除所有用戶的數據並重新創建數據庫。您希望根據用戶已擁有的數據庫版本進行有針對性的更改。架構的版本控制是您在應用程序代碼中處理自己的事情。 –

回答

0

Here是Android的「官方」風格創建模式。 這是說與你最瞭解的人,特別是如果你正在學習。