java - 快速插入 SQLite Android

标签 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();
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();
}

表名和字段名显然只是为了举例。

关于java - 快速插入 SQLite Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31936273/

相关文章:

java - 单击表从数据库中获取的错误

java - 无限 while 循环;输入验证;不知道该怎么做才能让它在输入之前读取 if 我应该做什么?

java - 是否可以使用 Spring 配置在运行时设置 JMS 监听器目标

android - flutter :无法构建android apk

android - 测试时卸载应用程序

sql - 如何编写一个从两个searchValues返回匹配项的SQL查询

php - 无法在 ubuntu 上安装 sqlite

c# - 使用 EntityFramework 6.1 清理 Sqlite 数据库

java - 一列添加两个按钮并获取点击行值javafx

android - 无法将 ksoap 对象绑定(bind)到 Android 中的 ArrayList