多个insert语句android sqlite

时间:2013-11-16 11:29:13

标签: android sql sqlite

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

insert into mytable(col1,..,coln) values(val1,..valn);insert into mytable col...

我听说过交易,ContentValue和使用union,但我无法弄清楚哪一种更适合这种情况。

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

2 个答案:

答案 0 :(得分:18)

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

    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();

答案 1 :(得分:0)

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

 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);
}