2016-10-13 11 views
0

AndroidのSQLiteとを学び始めました。の新しいAPIとメソッドがデータベースヘルパーで使用されました。いくつかのコードスニペットとチュートリアルがあります。私は2つのコードサンプルのテーブルとデータベースを作成する正しい方法を知りたいと思います。Android Studioデータベースとスキーマを作成する正しい方法

コードサンプルは "TEXT,"が含まれていると、なぜKEY_IDは(オンラインを 私が見つけたこれらのあるコード)の代わりにINTEGERTEXTを宣言した理由を私は知らない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

を実行するために使用されますオンラインで見つけたのは正しい方法かコードの構造ですか?

両方とも正しいですか?そうでない場合は、どうすれば改善できますか?

ありがとうございました。

+0

あなたの 'onUpgrade'コードにちょっと注記しておきましょう。おそらく、すべてのユーザーのデータを消去してデータベースを再作成したくないでしょう。ユーザーがすでに所有しているデータベースのバージョンに基づいて、スキーマを変更する必要があります。また、スキーマのバージョン管理は、アプリケーションコードで自分自身を処理するものです。 –

答えて

0

Hereスキンを作成するAndroidの「公式」スタイルですか? あなたが特に理解しているものと一緒に行くと言われています。

関連する問題