-1

我的 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();
} 

如果有人知道可能出了什么问题,我将不胜感激。我根本看不到它。虽然我是新手,但仍在学习。谢谢

每个值都插入到我正在编辑的正确行中。但在错误的列中,我没有收到任何错误。

4

1 回答 1

0

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

于 2012-07-17T15:43:31.777 回答