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在網上找到,這是正確的方式或代碼結構?
都是正確的嗎?如果不是,我該如何改進?
謝謝。
只需在'onUpgrade'代碼中註釋:您可能不想刪除所有用戶的數據並重新創建數據庫。您希望根據用戶已擁有的數據庫版本進行有針對性的更改。架構的版本控制是您在應用程序代碼中處理自己的事情。 –