Android Studio正确创建数据库和架构的方法

时间:2016-10-13 14:50:58

标签: android mysql sqlite

我刚开始学习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语句

在网上找到的两个示例代码之间,这是代码的正确方法还是结构?

两者都正确吗?如果没有,我该如何改进呢?

感谢。

1 个答案:

答案 0 :(得分:0)

Here Android是“官方”创建架构的风格。 这就是说你最了解的那个,特别是如果你正在学习。