2015-08-26 6 views
0

Я хочу вставить некоторые значения в таблицу базы данных. В logcat ошибки нет, но значения в таблице не добавляются. Я не могу определить проблему.Данные не вставлены в Sqlitedatabase

Здесь находится класс базы данных. FoodieDatabase.java

public class FoodieDatabase extends SQLiteOpenHelper { 

     public String DATABASE_CREATE = "create table " 
       + TableData.TableInfo.TABLE_NAME + "(" 
       + TableData.TableInfo.COLUMN_ID + " INTEGER primary key ," 
       + TableData.TableInfo.COLUMN_hostel + " TEXT not null," 
       + TableData.TableInfo.COLUMN_weekday + " TEXT not null," 
       + TableData.TableInfo.COLUMN_category + " TEXT not null," 
       + TableData.TableInfo.COLUMN_food + " TEXT not null," 
       + TableData.TableInfo.COLUMN_rate + " TEXT not null" + ")"; 


     private static final int DATABASE_VERSION = 1; 

     // Database creation sql statement 
     public FoodieDatabase(Context context) { 
      super(context, TableData.TableInfo.DATABASE_NAME, null, DATABASE_VERSION); 
      Log.w("FoodieDatabase","Database Created"); 
     } 

     @Override 
     public void onCreate(SQLiteDatabase database) { 
        database.execSQL(DATABASE_CREATE); 
      Log.w(FoodieDatabase.class.getName(), 
        " Table " + TableData.TableInfo.TABLE_NAME + " Successfully created. " 
      ); 
     } 
     @Override 
     public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 

     } 

     public void insertvalues(FoodieDatabase fdb, Integer id, String hostel, 
           String weekday, String category, String food , String rate){ 
      SQLiteDatabase sdb = fdb.getWritableDatabase(); 

      ContentValues cv = new ContentValues(); 
      cv.put(TableData.TableInfo.COLUMN_ID,id); 
      cv.put(TableData.TableInfo.COLUMN_hostel,hostel); 
      cv.put(TableData.TableInfo.COLUMN_weekday,weekday); 
      cv.put(TableData.TableInfo.COLUMN_category,category); 
      cv.put(TableData.TableInfo.COLUMN_food,food); 
      cv.put(TableData.TableInfo.COLUMN_rate,rate); 

      sdb.insert(TableData.TableInfo.TABLE_NAME, null, cv); 
     } 

     public Cursor retrievevalues(FoodieDatabase fdb){ 

      SQLiteDatabase sq = fdb.getReadableDatabase(); 
      String[] columns = {TableData.TableInfo.COLUMN_ID, 
        TableData.TableInfo.COLUMN_hostel, 
        TableData.TableInfo.COLUMN_weekday, 
        TableData.TableInfo.COLUMN_category, 
        TableData.TableInfo.COLUMN_food, 
        TableData.TableInfo.COLUMN_rate}; 
      Cursor CR = sq.query(TableData.TableInfo.TABLE_NAME,columns,null,null,null,null,null); 
      return CR; 
     } 
    } 

InsertData.java

public class InsertData extends AppCompatActivity { 
    com.rengwuxian.materialedittext.MaterialEditText sno; 
    com.rengwuxian.materialedittext.MaterialEditText hostel; 
    com.rengwuxian.materialedittext.MaterialEditText category; 
    com.rengwuxian.materialedittext.MaterialEditText food; 
    com.rengwuxian.materialedittext.MaterialEditText weekday; 
    com.rengwuxian.materialedittext.MaterialEditText rate; 


    Button insert; 

    String Shostel; 
    String Scategory; 
    String Sfood; 
    String Sweekday; 
    String Srate; 

    Integer Isno; 

    Context context= this; 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_insert_data); 

     sno = (com.rengwuxian.materialedittext.MaterialEditText) findViewById(R.id.sno); 
     sno.setText("1"); 
     hostel = (com.rengwuxian.materialedittext.MaterialEditText) findViewById(R.id.hostel); 
     category = (com.rengwuxian.materialedittext.MaterialEditText) findViewById(R.id.category); 
     food = (com.rengwuxian.materialedittext.MaterialEditText) findViewById(R.id.food); 
     weekday = (com.rengwuxian.materialedittext.MaterialEditText) findViewById(R.id.weekday); 
     rate = (com.rengwuxian.materialedittext.MaterialEditText) findViewById(R.id.rate); 

     insert = (Button) findViewById(R.id.insert); 

     Isno = Integer.parseInt(sno.getText().toString()); 
     Shostel = hostel.getText().toString(); 
     Scategory = category.getText().toString(); 
     Sfood = food.getText().toString(); 
     Sweekday = weekday.getText().toString(); 
     Srate = rate.getText().toString(); 

     insert.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       FoodieDatabase fdb = new FoodieDatabase(context); 
       fdb.insertvalues(fdb,Isno,Shostel,Sweekday,Scategory,Sfood,Srate); 
       Toast.makeText(InsertData.this,"Value No." + Isno + Shostel + Scategory + "inserted successfully.",Toast.LENGTH_LONG).show(); 

       Intent intent = new Intent(InsertData.this, Home.class); 
       InsertData.this.startActivity(intent); 
       finish(); 
      } 
     }); 
    } 

В InsertData.java файл я использовал Тост, чтобы проверить, что значения как Isno, Shostel, Scategory. Shostel, Scategory значения равны нулю в тосте. Я имею в виду, что они пусты, ничего не отображается. Пока Isno всегда показывает 1, который я установил в этом editText изначально. Скажите мне, если вам нужно больше деталей. Заранее спасибо!

+0

Почему вы пришли к выводу, что ничего не вставлено и что вы подразумеваете под этим? Ваша таблица по-прежнему пуста или ваш вывод основан на значениях в вашем тосте? Нигде вы не извлекаете ценности из базы данных, так как вы можете быть уверены, что ничего не вставлено –

ответ

0

Вы сохраняете значения до того, как пользователь даже увидит пользовательский интерфейс. Вы должны поместить значения из вашего EditTexts после того, как получите щелчок -

insert.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Isno = Integer.parseInt(sno.getText().toString()); 
      Shostel = hostel.getText().toString(); 
      Scategory = category.getText().toString(); 
      Sfood = food.getText().toString(); 
      Sweekday = weekday.getText().toString(); 
      Srate = rate.getText().toString(); 

      FoodieDatabase fdb = new FoodieDatabase(context); 
      fdb.insertvalues(fdb,Isno,Shostel,Sweekday,Scategory,Sfood,Srate); 
      Toast.makeText(InsertData.this,"Value No." + Isno + Shostel + Scategory + "inserted successfully.",Toast.LENGTH_LONG).show(); 

      Intent intent = new Intent(InsertData.this, Home.class); 
      InsertData.this.startActivity(intent); 
      finish(); 
     } 
    }); 
Смежные вопросы