Android 在SQLite查询中用where条件插入或替换多行
我需要一个SQLite查询来插入或更新SQLite表 MyTable:Android 在SQLite查询中用where条件插入或替换多行,android,android-sqlite,bulkinsert,Android,Android Sqlite,Bulkinsert,我需要一个SQLite查询来插入或更新SQLite表 MyTable: Id(主键且不为空) 名称 电话号码 预期查询:如果Id不存在,则必须插入新行 如果更改了现有行值,则在插入多行时更新该行 编辑1: 我已经发布了我尝试过的插入查询。像这样,我尝试使用“插入或替换”。但它是与Firfox SQLite管理器一起工作,而不是与Android SQLite一起工作 我使用了sDataBase.execSQL(查询)来执行此查询。尝试以下操作: String sql = "INSERT OR R
与Firfox SQLite管理器一起工作,而不是与Android SQLite一起工作
我使用了sDataBase.execSQL(查询)
来执行此查询。尝试以下操作:
String sql = "INSERT OR REPLACE INTO MyTable (Name, PhoneNumber) VALUES (?,?)";
SQLiteStatement st = db.compileStatement(sql);
并编写或更新:
public void writeOrUpdateData(ArrayList<MyClass> data) {
try {
db.beginTransaction();
for(int i = 0; i < data.size(); i++) {
st.clearBindings();
st.bindLong(1, data.get(i).getName());
st.bindString(2, data.get(i).getPhoneNumber);
st.executeInsert();
}
db.setTransactionSuccessful();
}
catch(Exception e) {}
finally {
db.endTransaction();
}
}
public void writeOrUpdateData(ArrayList数据){
试一试{
db.beginTransaction();
对于(int i=0;i
通过这种方式,您可以获得批量插入/更新,这非常有效 我只在Firefox SQLite管理器中创建了主键数据库。我在Android的SQLite数据库中错过了这个。现在我已经用主键创建了数据库,并且不为NULL现在工作正常多行将无法处理您的查询。我试过了@Ponmalar Emm,我希望您有一些自定义类对象,您希望在本地sqlite db中编写/更新这些对象。所以批量插入/更新就可以了。在ArrayList中传递多个对象感谢您的回复。我正在从webview发送查询。在WebView中,我将使用sDataBase.execSQL(query)执行查询;所以我只需要一个问题,一个可能对某人有帮助的便条。使用带有“插入或替换”的批处理命令(so..values(…)、(…)、(…)等等)是完全可以的。另一个可能对某人有所帮助的注意事项是:)有趣的是,性能测试表明,“插入或替换”比普通的“插入”慢一点(最差为5%)。