繁体   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