나는`내 테이블을 업데이트하려고 업데이트하지만 ERROR 선택 DB를 얻고있다 : 잘못된 지능 :안드로이드 SQLite는
public class DatabaseUtility extends SQLiteAssetHelper{
public static final String DATABASE = "contacts.db";
public static final String TABLE = "contacts";
public static final String C1_NAME = "name";
public static final String C2_PHONE = "phone";
public static final String C3_LOCATE_TOP = "locateTop";
public static final String C4_RATING = "rating";
public DatabaseUtility(Context context) {
super(context, DATABASE, null, 1);
}
}
데이터베이스 액세스 클래스 업데이트 기능
다음 내 코드입니다 "널 (null)"public void updateContact(String name, String oldPhone,String newPhone, int locateTop, int rating){
try {
this.open();
String updateWhere = String.format("%s=%s",this.databaseUtility.C2_PHONE, oldPhone);
ContentValues contentValues = new ContentValues();
contentValues.put(this.databaseUtility.C1_NAME, name);
contentValues.put(this.databaseUtility.C2_PHONE,newPhone);
contentValues.put(this.databaseUtility.C3_LOCATE_TOP, locateTop);
contentValues.put(this.databaseUtility.C4_RATING, rating);
this.sqLiteDatabase.update(this.databaseUtility.TABLE, contentValues, updateWhere,null);
this.close();
}catch (Exception e){
Log.e("Error Update Contact",e.getMessage());
}
}
연락 유틸리티 클래스 업데이트 기능
public void updateContact(String name, String oldPhone, String newPhone, boolean locateTop, int rating){
int lt = locateTop ? 1 : 0;
this.databaseAccess.updateContact(name, oldPhone, newPhone, lt, rating);
}
연락처 업데이트 작업
public class UpdateContactActivity extends AppCompatActivity {
private ContactUtility contactUtility;
private EditText txtName, txtPhone;
private Button btnUpdate;
private CheckBox chkTop;
private RatingBar ratingContact;
private Contact contact;
private String oldPhone;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.add_contact);
getSupportActionBar().setDefaultDisplayHomeAsUpEnabled(true);
ContactUtility contactUtility = new ContactUtility(getApplicationContext());
this.contact =(Contact) getIntent().getSerializableExtra(Requests.EXTRA_CONTACT);
this.oldPhone = this.contact.getPhone();
this.init();
}
private void init(){
this.txtName = (EditText) findViewById(R.id.txtName);
this.txtName.setFilters(new InputFilter[]{new InputFilter.AllCaps()});
this.txtName.setText(this.contact.getName());
this.txtPhone = (EditText) findViewById(R.id.txtPhone);
this.txtPhone.setText(this.contact.getPhone());
this.chkTop = (CheckBox) findViewById(R.id.chkTop);
this.chkTop.setChecked(this.contact.isLocateTop());
this.ratingContact = (RatingBar) findViewById(R.id.ratingContact);
if (chkTop.isChecked()){
this.ratingContact.setEnabled(true);
this.ratingContact.setRating(contact.getRating());
}
else{
this.ratingContact.setEnabled(false);
}
this.chkTop.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (chkTop.isChecked()) {
ratingContact.setEnabled(true);
ratingContact.setRating(contact.getRating());
}
else {
ratingContact.setEnabled(false);
ratingContact.setRating(0);
}
}
});
this.btnUpdate = (Button) findViewById(R.id.btnSave);
this.btnUpdate.setText(R.string.update_contact);
this.btnUpdate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// update
String name = txtName.getText().toString();
String phone = txtPhone.getText().toString();
if (chkTop.isChecked()){
float rate = ratingContact.getRating();
contactUtility.updateContact(name,oldPhone, phone, true,(int)rate); // error
}else{
contactUtility.updateContact(name,oldPhone, phone, false, 0); // error
}
String message = String.format("%s is updated",name);
Toast.makeText(getApplicationContext(), message, Toast.LENGTH_SHORT).show();
Intent intent = new Intent(getApplicationContext(), MainActivity.class);
setResult(Activity.RESULT_OK, intent);
finish();
}
});
}
}
오류
프로그램은 클릭 버튼 후에 실행06-29 11:45:21.802 13556-13556/com.umitkas.contacts E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.umitkas.contacts, PID: 13556
java.lang.NullPointerException: Attempt to invoke virtual method 'void com.umitkas.contacts.ContactUtility.updateContact(java.lang.String, java.lang.String, java.lang.String, boolean, int)' on a null object reference
at com.umitkas.contacts.UpdateContactActivity$2.onClick(UpdateContactActivity.java:95)
at android.view.View.performClick(View.java:5198)
at android.view.View$PerformClick.run(View.java:21147)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 06-29 11:45:25.570 13788-13788/com.umitkas.contacts E/ERROR SELECTING DB: Invalid int: "null"
, 어떻게 오류가 귀하의 오류 메시지에 의해 판단
어떤 줄에. 이 오류가 발생합니까? 'this.databaseUtility.TABLE'이 올바른 값입니까?'DatabaseUtility.TABLE'이 아니므로 정적입니까? – Marco7757
@ Marco7757 기본적으로 'contactUtility'라는 코드를 업데이트하는 특정 행은 제공하지 않습니다. updateContact (name, oldPhone, phone, true, (int) rate);'여기도 Dat을 참조합니다. 액세스 클래스 업데이트 기능을 완화하십시오 – umtkas