我需要在SQLite表中插入或更新一个SQLite查询。
MyTable的:
预期查询:如果ID不存在,则必须插入新行 如果更改了现有行值,则在插入多行时更新该行。
编辑1:
我已经发布了我在Insert Multiple Rows in SQLite Error (error code = 1)中尝试过的INSERT查询。就像我一样,我尝试过使用“INSERT OR REPLACE”。但它是working with Firfox SQLite Manager Not working with Android SQLite
。
我使用sDataBase.execSQL(query)
来执行此查询。
答案 0 :(得分:2)
试试这个:
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();
}
}
通过这种方式,您可以获得批量插入/更新,这非常有效!
答案 1 :(得分:0)
我只在Firefox SQLite Manager中创建了带主键的数据库。我在Android的SQLite数据库中错过了这个。现在我有 created database with PRIMARY KEY and NOT NULL
。 现在正常运作。