我的情况非常不同。我有一个表单,用户填写数据并插入数据库。现在采用相同的形式,我也需要更新他的数据。有点像,有搜索用户自动填充文本视图。当用户找到他时,来自数据库的数据直接填充所有表单字段。现在,他要么提交具有相同信息的数据,如果他的信息没有改变,或者如果信息已经改变,他只改变一些字段,然后按相同的按钮(提交)来更新他的数据。我这样做是因为我需要在不同的特定会话中注册用户。他可以使用相同的数据多次注册。但是当他的一些数据被更改时,我需要更新他的数据,但是在会话中使用新的id注册他。
我不想在这里提供我的代码,我只需要一些技术帮助,我怎样才能解决这个问题呢?如果我没错,我正在考虑使用TextWatcher。我可以在每个edittext表单中实现textwatcher。当文本被更改时,用于插入的按钮(提交)以某种方式与textwatcher建立连接,它应该更新数据库而不是插入。
我不确定我是不对的。如果您有一些简单可靠的方法,请帮助我。谢谢!
答案 0 :(得分:0)
你必须在Activity中创建一个方法或在一个单独的类中创建一个方法(我更喜欢一个单独的类用于数据库相关的方法)。并且您必须保留一些注册ID或每次都应匹配的内容。
假设注册ID被命名为ID。在该插入方法中插入数据检查时,此ID是否与以前的任何记录匹配。如果匹配则执行更新而不是插入。
类似的东西:
SQLiteDatabase objSqliteDB = DatabaseHelper.openDataBase();
objSqliteDB.beginTransaction();
SQLiteStatement stmtRecCount = objSqliteDB.compileStatement("select count(*) from ID where ID =?");
stmtRecCount.bindString(1, ID);
long count = stmtRecCount.simpleQueryForLong();
if(count != 0)
{
stmtUpdate.bindString(1, Name);
. . .
stmtUpdate.execute();
}
else
{
stmtInsert.bindString(1, Name);
. . .
stmtInsert.executeInsert();
}
添加您需要更新的其他字段
stmtInsert &安培; stmtUpdate
将是您的插入和更新查询