2012-12-05 2 views
0

Первое сообщение для меня. Я занимаюсь разработкой Android в первый раз и имею только ограниченный опыт программирования на Java. На мой вопрос ...Создание таблицы в Android

При создании нескольких таблиц в классе dbHelper, какой метод является предпочтительным?

Инициализация переменных для хранения строк создания ...

private static final String DATABASE_CREATE = 
      "create table notes (_id integer primary key autoincrement, "+ 
      "title text not null, body text not null);"; 

db.execSQL(DATABASE_CREATE); 

или просто ...

db.execSQL("create table notes (_id integer primary key autoincrement, "+ 
      "title text not null, body text not null);" 
); 

Я видел, как это делается в обоих направлениях, и я пытаюсь понять, почему все больше код будет лучше, чем меньше.

Спасибо!

+1

лучшего подход будет хранить весь ваш 'окончательного/constants' в отдельном классе. Так что в 'future' Если какая-либо вещь должна быть изменена, вы можете легко изменить ее в одном классе. –

ответ

0

@MrCleanX Сделайте вот это.

public class DatabaseHandler extends SQLiteOpenHelper { 

// All Static variables 
// Database Version 
private static final int DATABASE_VERSION = 1; 

// Database Name 
private static final String DATABASE_NAME = "contactsManager"; 

// Contacts table name 
private static final String TABLE_CONTACTS = "contacts"; 

// Contacts Table Columns names 
private static final String KEY_ID = "id"; 
private static final String KEY_NAME = "name"; 
private static final String KEY_PH_NO = "phone_number"; 

public DatabaseHandler(Context context) { 
    super(context, DATABASE_NAME, null, DATABASE_VERSION); 
} 

// Creating Tables 
@Override 
public void onCreate(SQLiteDatabase db) { 
    String CREATE_CONTACTS_TABLE = "CREATE TABLE " + TABLE_CONTACTS + "(" 
      + KEY_ID + " INTEGER PRIMARY KEY," + KEY_NAME + " TEXT," 
      + KEY_PH_NO + " TEXT" + ")"; 
    db.execSQL(CREATE_CONTACTS_TABLE); 
} 

// Upgrading database 
@Override 
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
    // Drop older table if existed 
    db.execSQL("DROP TABLE IF EXISTS " + TABLE_CONTACTS); 

    // Create tables again 
    onCreate(db); 
} 
0

Как наилучшая практика, вы должны создать константы. Это поможет вам, когда вы захотите внести некоторые изменения в таблицу позже.

0

Лично я предпочитаю хранить их в конечных статических переменных String, чтобы я мог легко редактировать их в одном месте, и таким образом мне было бы легче читать это и изменить что-то, что применимо, возможно, к нескольким базам данных. Я думаю, что это самый предпочтительный способ для большинства разработчиков.

public class myVariables { 
    public final static String firstTable = "firstTableCreationQuery"; 
    public final static String secondTable = "secondTableCreationQuery"; 
} 

И вы можете получить доступ к ним очень легко

... 
db.execSQL(myVariables.firstTable); 
db.execSQL(myVariables.secondTable); 
... 
+0

Мне нравится эта идея. Тем не менее, все же кажется немного больше кода, чем нужно. Благодаря! – MrCleanX

+0

Да, но думайте, что вы всегда можете найти обходные пути, чтобы уменьшить размер вашего кода! – Pavlos

Смежные вопросы