0
AndroidのSQLiteとを学び始めました。の新しいAPIとメソッドがデータベースヘルパーで使用されました。いくつかのコードスニペットとチュートリアルがあります。私は2つのコードサンプルのテーブルとデータベースを作成する正しい方法を知りたいと思います。Android Studioデータベースとスキーマを作成する正しい方法
コードサンプルは"TEXT,"
が含まれていると、なぜKEY_IDは(オンラインを
私が見つけたこれらのあるコード)の代わりにINTEGER
のTEXT
を宣言した理由を私は知らない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)");
}
はそれをテストし
が、うまくいかなかった。
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);
}
}
コードサンプル2私が理解しやすいように表示されます。 はこれまでのところ、私が理解することは
SQLiteOpenHelper
は、データベースとテーブルを作成し、CRUD
execSQL()
を操作するのに必要なメソッドを呼び出すために使用されていることですが、私は2つのサンプル・コードの間SQL
文
を実行するために使用されますオンラインで見つけたのは正しい方法かコードの構造ですか?
両方とも正しいですか?そうでない場合は、どうすれば改善できますか?
ありがとうございました。
あなたの 'onUpgrade'コードにちょっと注記しておきましょう。おそらく、すべてのユーザーのデータを消去してデータベースを再作成したくないでしょう。ユーザーがすでに所有しているデータベースのバージョンに基づいて、スキーマを変更する必要があります。また、スキーマのバージョン管理は、アプリケーションコードで自分自身を処理するものです。 –