【问题标题】:Android Creating SQLite Database and Inserting Rows - Best practise?Android 创建 SQLite 数据库和插入行 - 最佳实践?
【发布时间】:2015-12-16 13:49:13
【问题描述】:

在我的应用程序中,我使用的是 SQLite 数据库。如果尚未创建此数据库,则由 DBHelper 类创建。

最初我需要一个大约有 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')");
        // ........

    }


}

【问题讨论】:

标签: java android sqlite


【解决方案1】:

您可以尝试以下方法。

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?

【讨论】:

  • 感谢您的链接。你确定你的解决方案吗? values.put 期望参数 1 = 字符串键
  • 是的。您也可以点击此链接。 stackoverflow.com/questions/6925707/… 。插入多行的地方..希望这会有所帮助:)
【解决方案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 条记录,正常插入需要 1657 毫秒,而带有 endTransaction() 的语句需要 92 毫秒)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-01-24
    • 2012-09-16
    • 1970-01-01
    • 1970-01-01
    • 2010-10-17
    • 2012-05-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多