我在 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/