2015-07-10 53 views
2

在我的應用程序我正在使用SQLite數據庫。這個數據庫是由DBHelper類創建的,如果尚未創建的話。Android創建SQLite數據庫並插入行 - 最佳實踐?

最初我需要一張約30行的表格。填充數據的最佳做法是什麼?這是我的代碼。它很好地工作,但我認爲有更好的方法來做到這一點?

public class DBHelper extends SQLiteOpenHelper { 

    public DBHelper(Context context){ 
     super(context, DATABASE_NAME , null, 1); 
    } 

    private static final String DATABASE_TABLE_QUOTES = "quotes"; 


    public void onCreate(SQLiteDatabase db) { 



     String CREATE_TABLE_QUOTES = "CREATE TABLE IF NOT EXISTS `" + DATABASE_TABLE_QUOTES + "` (\n" + 
     "\t`quote_id`\tINTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,\n" + 
     "\t`quote`\tTEXT NOT NULL\n" + 
     ");"; 

     db.execSQL(CREATE_TABLE_QUOTES); 


     db.execSQL("INSERT INTO " + DATABASE_TABLE_QUOTES + "VALUES (1, 'test 1')"); 
     db.execSQL("INSERT INTO " + DATABASE_TABLE_QUOTES + "VALUES (2, 'test 2')"); 
     db.execSQL("INSERT INTO " + DATABASE_TABLE_QUOTES + "VALUES (3, 'test 3')"); 
     db.execSQL("INSERT INTO " + DATABASE_TABLE_QUOTES + "VALUES (4, 'test 4')"); 
     // ........ 

    } 


} 
+0

請參閱本教程示例以獲取最佳實踐:http://www.androidhive.info/2013/09/android-sqlite-database-with-多表/ – SANAT

回答

2

既然你問的最佳實踐,我引用這個答案 你應該使用statements

database.beginTransaction(); 
SQLiteStatement stmt = database.compileStatement(sql); 

for (int i = 0; i < NUMBER_OF_ROWS; i++) { 
    //generate some values 

    stmt.bindString(1, randomName); 
    stmt.bindString(2, randomDescription); 
    stmt.bindDouble(3, randomPrice); 
    stmt.bindLong(4, randomNumber); 

    long entryID = stmt.executeInsert(); 
    stmt.clearBindings(); 
} 

database.setTransactionSuccessful(); 
database.endTransaction(); 

Reference

這裏是one more link這裏給出了這兩種插入方法之間的比較。 (對於100條記錄,正常插入需要1657ms,而帶有endTransaction()的語句需要92ms)

3

您可以嘗試以下方法。

ContentValues values=new ContentValues(); 
      values.put(1, "test1"); 
      db.insert("table_name", null, values); 
      values.put(2, "test2"); 
      db.insert("table_name", null, values); 
      values.put(3,"test3"); 
      db.insert("table_name", null, values); 
      values.put(4,"test4"); 
      db.insert("table_name", null, values); 
      ... 

更多細節檢查這些鏈接

http://mrbool.com/how-to-insert-data-into-a-sqlite-database-in-android/28895

How to insert value in data base using sqlite in android?

+0

感謝您的鏈接。你確定你的解決方案嗎? values.put期望參數1 =字符串鍵 –

+0

亞。您也可以按照此鏈接。 http://stackoverflow.com/questions/6925707/android-content-values-over-writing-existing-rows。多行正在插入..希望這會有所幫助:) –