Java 快速插入SQLite Android

Java 快速插入SQLite Android,java,android,sqlite,Java,Android,Sqlite,我在Android中学习SQLite。我尝试创建一个通用的方法来插入数据库。其缓慢插入: public long addVlues(String tableName, ContentValues cv) { long result = db.insert(tableName, null, cv); return result; } 但是它的方法是通用的,我可以随时使用它。例如: ContentValues cv = new ContentValues(

我在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(字符串tableName){
String sql=“插入“+tableName+”(id,name)值(?,);”;
db.beginTransaction();
SQLiteStatement stmt=db.compileStatement(sql);
对于(int i=0;i<1000;i++){
stmt.bindString(i,“名称”);
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();
}

表和字段名显然只是示例。

对于每个表,我需要创建单个方法。
False。将表名作为字符串传递。1个方法(如果它们具有相同的结构)。或者也可以简单地传递字段名。如果你去掉1000步的循环,不是会更快吗?它看起来完全没用。交易也是如此。@FrankN.Stein谢谢你的回答。在这个例子中,我有
表名
。但是,如果每个表的结构不同?我不明白。不,如果表结构不同,并且不能将差异参数化,那么,不,您必须编写几个方法。或者在表名上添加一个控件,并相应地构造适当的SQL命令。@FrankN.Stein我明白了,谢谢