我的 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();
}
如果有人知道可能出了什么问题,我将不胜感激。我根本看不到它。虽然我是新手,但仍在学习。谢谢
每个值都插入到我正在编辑的正确行中。但在错误的列中,我没有收到任何错误。