2013-07-04 2 views
1

Я новичок в android, и я разрабатываю приложение, которое сохраняет вход пользователя в базу данных. Однако по некоторым причинам я не могу видеть данные, которые были у пользователя, когда он нажал кнопку «Сохранить». Можете ли вы помочь мне сохранить значения из этих кодов?Не удается сохранить вход пользователя в базу данных в Android

activity.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" > 

    <Spinner 
     android:id="@+id/spn_District" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" /> 

    <Spinner 
     android:id="@+id/spn_Province" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" /> 

    <Spinner 
     android:id="@+id/spn_InfoType" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" /> 

    <TextView 
     android:id="@+id/txt_Date" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" /> 

    <TextView 
     android:id="@+id/txt_Remarks" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" /> 

</LinearLayout> 

Cons_IReport.java (Конструктор)

public Cons_iReport(String district, String province, String infoType, String rDateObserved, String rRemarks){ 
    this._district = district; 
    this._province = province; 
    this._infoType = infoType; 
    this._dateObserved = rDateObserved; 
    this._remarks = rRemarks; 
} 

DatabaseHandler.java

public void SaveReport(Cons_iReport save){ 
    SQLiteDatabase db = this.getWritableDatabase(); 
    ContentValues values = new ContentValues(); 
    values.put(Constants.REPORT_DISTRICT, save.getDistrict()); 
    values.put(Constants.REPORT_PROVINCE, save.getProvince()); 
    values.put(Constants.REPORT_INFOTYPE, save.getInfoType()); 
    values.put(Constants.REPORT_DATEOBSERVED, save.getDateObserved()); 
    values.put(Constants.REPORT_REMARKS, save.getRemarks()); 

    db.insert(Constants.TABLE_REPORT, null, values); 
    db.close(); 
} 

MainActivity.java

btn_Save.setOnClickListener(new OnClickListener() { 

    @Override 
     public void onClick(View arg0) { 
      String rDistrict = spn_District.getSelectedItem().toString(); 
      String rProvince = spn_Province.getSelectedItem().toString(); 
      String rInfoType = spn_InfoType.getSelectedItem().toString(); 
      String rDateObserved = txt_Date.getText().toString(); 
      String rRemarks = txt_Remarks.getText().toString(); 

      databaseHandler.SaveReport(new Cons_iReport(rDistrict, rProvince, rInfoType, rDateObserved, rRemarks)); 
      Toast.makeText(getApplicationContext(), "SAVED!\n" + rDistrict + "\n" + rProvince + "\n" + rInfoType + "\n" + rDateObserved + "\n" + rRemarks, Toast.LENGTH_SHORT).show(); 
     } 
}); 

ответ

2

Это будет звучать неправильно, но не db.close. Последующие вызовы getWritableDatabase возвратят тот же, уже закрытый объект. Это может также повлиять на вашу способность читать из базы данных, если используется тот же базовый теперь закрытый объект.

Оттяните файл db с вашего эмулятора и откройте его в редакторе SQLite http://sqliteadmin.orbmu2k.de/, но если вы можете найти лучшего, используйте его.

Есть ли строки в таблице в этой базе данных?

Также для целей отладки попробуйте insertOrThrow вместо вставки, тогда вы получите исключение, если вставка завершится с ошибкой, а не с ошибкой.