簡體   English   中英

快速插入SQLite Android

[英]quick insert SQLite Android

我在Android中學習SQLite。 然后,我嘗試創建插入數據庫的通用方法。 插入緩慢

 public long addVlues(String tableName, ContentValues cv) {
        long result = db.insert(tableName, null, cv);
        return result;
    }

但是它的方法通用,我可以在需要時使用它。 例:

ContentValues cv = new ContentValues();
cv.put("name", "test");
dao.addVlues("daoTest", cv); //this i calling method addValues

它的代碼好而簡單(對我而言),但速度慢。

波紋管快速插入代碼:

public void addValueTest(String tableName) {
        String sql = "insert into "+ tableName + " (id, name) values (?, ?);";

        db.beginTransaction();
        SQLiteStatement stmt = db.compileStatement(sql);
        for (int i = 0; i < 1000; i++) {
            stmt.bindString(i, "name");

            stmt.clearBindings();
            Log.e("qqq", String.valueOf(i));
        }

        db.setTransactionSuccessful();
        db.endTransaction();
    }

但是我需要為每個表創建單個方法,這會增加代碼。 我有問題。 如何創建通用的快速插入方法?

我會做這樣的事情:

public void addValueTest(String tableName, String[] values)
{
    String sql = "";

    if (tableName.equalsIgnoreCase("TableA"))
    {
            sql = "insert into "+ tableName + " (TableA_FieldA, TableA_FieldB) values (?, ?);";
    }
    else if (tableName.equalsIgnoreCase("TableB"))
    {
            sql = "insert into "+ tableName + " (TableB_FieldA, TableB_FieldB, TableB_FieldC) values (?, ?, ?);";
    }

    //else if ...
    //else if ...
    //else if ...
    //else if ...

    SQLiteDatabase db = this.getWritableDatabase();
    db.execSQL(sql, values);
    db.close();
}

表和字段名稱顯然僅是示例。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM