我刚开始学习Android的SQLite和完全新的与数据库助手一起使用的API和方法。我正在关注一些代码片段和教程。我想知道哪个是创建两个代码示例的表和数据库的正确方法。
代码示例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);
}
}
CODE SAMPLE 2 似乎更容易理解。 到目前为止,我理解的是
SQLiteOpenHelper
用于创建数据库和表,并调用操作CRUD
所需的方法
execSQL()
用于执行SQL
语句
在网上找到的两个示例代码之间,这是代码的正确方法还是结构?
两者都正确吗?如果没有,我该如何改进呢?
感谢。