使用用于插入的相同按钮更新数据库表

时间:2014-01-18 11:22:01

标签: android android-sqlite textwatcher

我的情况非常不同。我有一个表单,用户填写数据并插入数据库。现在采用相同的形式,我也需要更新他的数据。有点像,有搜索用户自动填充文本视图。当用户找到他时,来自数据库的数据直接填充所有表单字段。现在,他要么提交具有相同信息的数据,如果他的信息没有改变,或者如果信息已经改变,他只改变一些字段,然后按相同的按钮(提交)来更新他的数据。我这样做是因为我需要在不同的特定会话中注册用户。他可以使用相同的数据多次注册。但是当他的一些数据被更改时,我需要更新他的数据,但是在会话中使用新的id注册他。

我不想在这里提供我的代码,我只需要一些技术帮助,我怎样才能解决这个问题呢?如果我没错,我正在考虑使用TextWatcher。我可以在每个edittext表单中实现textwatcher。当文本被更改时,用于插入的按钮(提交)以某种方式与textwatcher建立连接,它应该更新数据库而不是插入。

我不确定我是不对的。如果您有一些简单可靠的方法,请帮助我。谢谢!

1 个答案:

答案 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

将是您的插入和更新查询