Java 快速插入SQLite Android
我在Android中学习SQLite。我尝试创建一个通用的方法来插入数据库。其缓慢插入: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(
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我明白了,谢谢