2016-08-09 2 views
0

О моем приложении: сохраняет производительность обучения - одна база данных со многими таблицами (одна таблица - журнал тренировки). Дата - это имя таблицы (например, d2016_08_09). Когда пользователь нажимает кнопку «Сохранить», приложение устанавливает имя таблицы.SQLiteLog: нет такой таблицы

public static final String DB_NAME ="db_workout";//name of base 
public static String DB_TABLE ="dateOfWorkout";//name of table 
public static final int DB_VER =1; 

public static void setDbTable(String dbTable) { 
    DB_TABLE = dbTable; 
} 

public Base(Context context, String name, SQLiteDatabase.CursorFactory factory, int version, String db_table_name) { 
    super(context, DB_NAME, null, DB_VER); 
    setDbTable(db_table_name); 
    System.out.println(DB_TABLE); 
} 


@Override 


public void onCreate(SQLiteDatabase db){ 
    db.execSQL(
      "create table IF NOT EXISTS "+ DB_TABLE +"(" 
      + "nr integer primary key autoincrement," 
      + "name text," 
      + "s1 integer," 
      + "s2 integer," 
      + "s3 integer," 
      + "s4 integer," 
      + "s5 integer," 
      + "weight integer);" 
      +""); 

} 

public void addWorkoutPlan(String i, int q, int w, int e, int r, int t, int wt) { 
    SQLiteDatabase db = getWritableDatabase(); 
    ContentValues wartosci = new ContentValues(); 

    wartosci.put("name", i); 
    wartosci.put("s1", q); 
    wartosci.put("s2", w); 
    wartosci.put("s3", e); 
    wartosci.put("s4", r); 
    wartosci.put("s5",t); 
    wartosci.put("weight",wt); 



    db.insertOrThrow(DB_TABLE, null, wartosci); 
} 
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
    //uzupelnic 

} 

и класс, где я использую добавить дату базировать

sNameTable = "d"+sNameTable; 
    db= new Base(this,null,null,0,sNameTable); 

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



    bAddDate.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 

      setValues(); // setting values 





       for (int i = 0; i < 1; i++) { 

        db.addWorkoutPlan(
          tName[0][i].toString(),//nazwa cwiczenia 
          Integer.parseInt(tSeries[0][i].getText().toString()),//1. seria 
          Integer.parseInt(tSeries[1][i].getText().toString()), 
          Integer.parseInt(tSeries[2][i].getText().toString()), 
          Integer.parseInt(tSeries[3][i].getText().toString()), 
          Integer.parseInt(tSeries[4][i].getText().toString()), 
          Integer.parseInt(tWeight[0][i].getText().toString()) 

        ); 
       } 

       Context context = getApplicationContext(); 
       CharSequence text = "Trening dodany"; 
       int duration = Toast.LENGTH_SHORT; 
       Toast toast = Toast.makeText(context, text, duration); 
       toast.show(); 


     } 
    }); 
} 

, когда я нажимаю кнопку, чтобы добавить дату, приложение аварий и AndroidStudio получить этот журнал:

23190-23190/com.example.konra_000.workoutplan E/SQLiteLog: (1) нет такой таблицы: d2016_08_09

23190-23190/com.example.konra_000.workoutplanЕ/AndroidRuntime: неустранимый: Основной процесс: com.example.konra_000.workoutplan, ПИД: 23190 android.database.sqlite.SQLiteException: нет такой таблицы: d2016_08_09 (код 1):, в то время компиляции: INSERT INTO d2016_08_09 (имя, s3, вес, s2, s1, s5, s4) VALUES (?,?,?,?,?,?,?)

+1

Вы никогда не должны помещать информацию в имя таблицы. Сделайте дату дополнительной колонкой. –

ответ

0

Когда вы делаете сына изменения в SQLite базы данных, иногда изменения не видите, потому что ваша логика создания БД не оптимизирована.

Возможно, на вашем устройстве установлена ​​более старая версия базы данных, просто удалите и переустановите приложение.