我的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();
}
如果有人知道可能出错的地方,我真的很感激。我根本看不到它。虽然我是新手,但仍在学习。谢谢
每个值都插入到我正在编辑的正确行中。但在错误的栏目中,我没有错误。
答案 0 :(得分:0)
确保您的列顺序正确无误。您确定您的桌面布局是_id,SPINNER1,SPINNER2,SPINNER3,电话,电子邮件,地址,姓名评论? database.update的代码是什么?订单可能很重要。代码不能仅仅根据魔法找出正确的事物顺序;)