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);
ご覧のとおり、ここには 3 つのスピナーがあります。データベースに連絡先を追加するときにもそれがあります。更新後も正しい列に挿入されます。これらのスピナーは、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();
}
誰かが何が間違っているのかについて何か考えを持っていれば、本当に感謝しています。私は単にそれを見ることができません。私はこれが初めてで、まだ学んでいますが。ありがとうございました
すべての値が、編集中の正しい行に挿入されます。しかし、間違った列にあり、エラーは発生しません。