android sqlite中的多个insert语句

android sqlite中的多个insert语句,android,sql,sqlite,Android,Sql,Sqlite,我从网络下载了800条insert语句,格式如下: 插入mytable(col1,…,coln)值(val1,…valn);插入mytable列。 我听说过交易,ContentValues和使用union,但我不知道哪一个更适合这种情况 截断mytable后,在sqlite数据库中插入它们的最佳方式是什么?如果要运行多个查询,为了提高数据完整性和性能,应该使用事务。这是一段代码,让您了解如何执行此操作: SQLiteDatabase db = sqlHelper.getWritableD

我从网络下载了800条
insert
语句,格式如下:

插入mytable(col1,…,coln)值(val1,…valn);插入mytable列。

我听说过交易,
ContentValue
s和使用
union
,但我不知道哪一个更适合这种情况


截断
mytable
后,在sqlite数据库中插入它们的最佳方式是什么?

如果要运行多个查询,为了提高数据完整性和性能,应该使用事务。这是一段代码,让您了解如何执行此操作:

    SQLiteDatabase db = sqlHelper.getWritableDatabase(); // get a writable database here
    db.beginTransaction();

    try {
        for (int insertQuery : listOfQueries) {  // loop through your records 
            db.insert(...);
        }

        db.setTransactionSuccessful();
    }
    finally {
        db.endTransaction();
    }

    db.close();

我使用下面的代码,只运行一次查询

 public void addListRecord(List<Province> list) {
    SQLiteDatabase db = DatabaseManager.getInstance().openDatabase();
    try {
        String sql = " INSERT INTO " + TABLE_PROVINCE + " ("
                + COL_PROVINCE_ID + ","
                + COL_PROVINCE_NAME + ","
                + COL_PROVINCE_STATUS + ") VALUES ";
        String value = "";
        for (Province item : list) {
            value += "('" + item.getId() + "',"
                    + "'" + item.getName() + "',"
                    + "'" + item.getStatus() + "')";
            value += ",";
        }
        value = Utils.removeLastChar(value);
        value += ";";
        String mQuery = sql + value;
        Logger.debug("mQuery: " + mQuery);
        SQLiteStatement statement = db.compileStatement(mQuery);
        statement.execute();
    } catch (SQLException e) {
        Logger.debug("SQLException Error: " + e);
    } finally {
        DatabaseManager.getInstance().closeDatabase();
    }
}
public static String removeLastChar(String s) {
    if (s == null || s.length() == 0) {
        return s;
    }
    return s.substring(0, s.length() - 1);
}
public void addListRecord(列表){
SQLiteDatabase db=DatabaseManager.getInstance().openDatabase();
试一试{
String sql=“插入”+表\省+”(“
+COL_PROVINCE_ID+“,”
+COL_省名+“,”
+COL_省_状态+”)值”;
字符串值=”;
用于(省项目:列表){
值+=”(“+item.getId()+”,”
+““+”项。getName()+“,”
+“'”+item.getStatus()+“)”;
值+=“,”;
}
value=Utils.removeLastChar(值);
值+=“;”;
字符串mQuery=sql+值;
debug(“mQuery:+mQuery”);
SQLiteStatement=db.compileStatement(mQuery);
语句。execute();
}捕获(SQLE异常){
调试(“SQLException错误:”+e);
}最后{
DatabaseManager.getInstance().closeDatabase();
}
}
公共静态字符串removeLastChar(字符串s){
如果(s==null | | s.length()==0){
返回s;
}
返回s.substring(0,s.length()-1);
}

首先要做的事。这不是根据从服务器下载的数据更新表的好方法。为什么要下载insert语句?@Simon它是本地服务器,没有连接到internet。我正在尝试将mysql表(用作备份表)的值插入到sqlite的表中(insert语句是使用php脚本创建的),它能处理800条insert语句吗?是的,我在我的应用程序中可以处理大约7000条insert语句,并且工作得很好。您应该在单独的线程上执行此操作,但最好使用
AsyncTask
以避免阻塞UI线程。您不必每次都调用
insert
。可以将多个
传递给一个insert子句。看看这里:@Ricardo那就更好了!使用
db.insertorrow
而不仅仅是
db.insert
!此代码永远不会引发异常,因此如果其中一个插入失败,您将插入不完整的数据。