2012-07-17 3 views
-1

내 안드로이드 애플리케이션에 데이터베이스가 있습니다. 문제없이 행을 추가 할 수 있습니다. 그러나 행을 업데이트하려고하면 데이터베이스가 잘못된 값을 열에 넣습니다.데이터베이스의 행을 업데이트하면 열에 잘못된 값이 표시됩니다.

코드를 여러 번 읽었지만 문제를 찾을 수 없으므로 아마도 뚜렷한 문제를 볼 수 없을 정도로 많이 보았을 것입니다. 문제는 데이터베이스 행을 업데이트 할 때입니다. 값은 잘못된 열에 들어갑니다. 모든 열은 새로운 데이터로 채워집니다. 그러나 그들은 정확한 열에 있지 않습니다. 여기

은 예입니다

// 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's 값을 표시해야하고 다른 활동에 열의 나머지를 보낼 수 있습니다. 목록보기의 연락처 목록으로 생각하고 연락처를 클릭하면 나머지 정보가 표시됩니다.

나는 이것으로 데이터를 보낼 :

 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 

을 나는이 같은 정보를 얻을 EditTexts의 정보를 넣어 EditContact 활동에.

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 활동에서 텍스트로 변환됩니다.

이것은 내가

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

DatabaseConnector

에서 데이터베이스를 업데이트하는 방법이다 나는 것 정말 누군가가 잘못 될 수 있는지의 아이디어가 있다면 주셔서 감사합니다. 나는 그것을 볼 수 없다. 나는 이것에 대해 새로운 사람이지만 아직 배우고 있습니다. 감사합니다.

모든 값이 내가 편집중인 올바른 행에 삽입됩니다. 하지만 잘못된 열에, 나는 오류가 없습니다.

답변

0

열의 순서가 올바른지 확인하십시오. 당신의 테이블 레이아웃이 _id, SPINNER1, SPINNER2, SPINNER3, 전화, 이메일, 주소, 이름 코멘트라고 확신합니까? database.update의 코드는 무엇입니까? 주문이 중요 할 것입니다. 코드는 마법에 기초한 정확한 순서를 알아낼 수 없습니다.)

+0

나는 모든 것이 올바른 순서로 이루어져야한다는 것을 여러 번 확인했습니다. 그리고 매번 나는 그것을 놓쳤다. 하지만 지금은 사실 그 부분에만 집중했습니다. 그리고 효과가있었습니다! 고맙습니다 :) – user1512762

관련 문제