更新数据库中的行会在列中放入错误的值

时间:2012-07-17 15:32:29

标签: android database sql-update

我的android应用程序中有一个工作数据库。我可以毫无问题地添加行。但是当我尝试更新一行时,数据库会在列中放入错误的值。

我已经完成了很多次代码,但我找不到问题,我可能看了很多,以至于我看不出明显的问题。问题是在更新数据库行时。值被放入错误的列中。每列都充满了新数据。但他们不在正确的栏目中。

以下是一个例子:

// Inserting row into database gives this correct result
example: | id | column1 | column2 | column3 | column4 | column5 |
         | 1  | value1  | value2  | value3  | value4  | value5  |

// after updating the row i get this bad result:
example: | id | column1 | column2 | column3 | column4 | column5 |
         | 1  | value1  | value2  | value5  | value3  | value4  |

我有一个列表视图显示数据库column1的值,然后将其余列发送到另一个活动。将其视为列表视图中的联系人列表,并在单击联系人时显示其余信息。

我用这个发送数据:

      EditContact.putExtra(MyContacts.ROW_ID, rowID);
      EditContact.putExtra("PHONE", phoneTextView.getText());
      EditContact.putExtra("EMAIL", emailTextView.getText());
      EditContact.putExtra("ADRESS", adressTextView.getText());          
      EditContact.putExtra("NAME", nameTextView.getText());
      EditContact.putExtra("COMMENT", commentTextView.getText());
      startActivity(EditContact); // start the Activity
在EditContact活动中的

我得到这样的信息并将信息放在EditTexts中。

    if (extras != null) {
        rowID = extras.getLong("row_id");
        phoneEditText.setText(extras.getString("PHONE"));
        emailEditText.setText(extras.getString("EMAIL"));
        adressEditText.setText(extras.getString("ADRESS"));
        nameEditText.setText(extras.getString("NAME"));
        commentEditText.setText(extras.getString("COMMENT"));
    }

然后我将信息保存在数据库中,如下所示:

         String phone   =   phoneEditText.getText().toString();
         String email   =   emailEditText.getText().toString();
         String adress  =   adressEditText.getText().toString(); 
         String name    =   nameEditText.getText().toString();
         String comment =   commentEditText.getText().toString();                 
     String spinner1 = (String) spinner1.getSelectedItem();
     String spinner2 = (String) spinner2.getSelectedItem();
     String spinner3 = (String) spinner3.getSelectedItem();

 databaseConnector.updateContact(rowID, spinner1, spinner2, spinner3, phone, email, adress, name, comment);

如你所见,我在这里有三个微调器。当我向数据库添加联系人时,我也有这个。并且即使在更新后它们也会插入到正确的列中。这些微调器在viewcontact活动中被转换为文本。

这是我在DatabaseConnector中更新数据库的方法

public void updateContact(long id, String spinner1, String spinner2, String spinner 3, String phone, String email, String adress, String name, String comment)
{
    ContentValues editContact = new ContentValues();
    editContact .put("SPINNER1", spinner1);
    editContact .put("SPINNER2", spinner2);
    editContact .put("SPINNER3", spinner3);
    editContact .put("PHONE", phone);
    editContact .put("EMAIL", email);
    editContact .put("ADRESS", adress);
    editContact .put("NAME", name);
    editContact .put("COMMENT", comment);

    open();
    database.update(DATABASE_TABLE, editContact , "_id=" + id, null);
    close();
} 

如果有人知道可能出错的地方,我真的很感激。我根本看不到它。虽然我是新手,但仍在学习。谢谢

每个值都插入到我正在编辑的正确行中。但在错误的栏目中,我没有错误。

1 个答案:

答案 0 :(得分:0)

确保您的列顺序正确无误。您确定您的桌面布局是_id,SPINNER1,SPINNER2,SPINNER3,电话,电子邮件,地址,姓名评论? database.update的代码是什么?订单可能很重要。代码不能仅仅根据魔法找出正确的事物顺序;)