2016-08-09 4 views
0

내 앱 정보 : 교육 성능을 저장합니다. 하나의 데이터베이스에 여러 테이블이 있습니다 (한 테이블은 운동 로그입니다). 날짜는 표의 이름입니다 (예 : d2016_08_09). 사용자가 "저장 버튼"을 누르면 app이 테이블의 이름을 설정합니다.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(); 


     } 
    }); 
} 

기초를 두는 :

23190-23190/com.example.konra_000.workoutplan E/SQLiteLog : (1) 해당 테이블 없음 : d2016_08_09

23190-23190/com.example.konra_000.workoutplan,451,515,E/AndroidRuntime : 치명적인 예외 : 주요 프로세스 : com.example.konra_000.workoutplan, PID : 23190 android.database.sqlite.SQLiteException : 그런 테이블 : d2016_08_09 (코드 1) : 컴파일하는 동안 : INTO INSERT 때로는 d2016_08_09 (이름, S3, 체중, S2, S1, S5, S4) VALUES (?,?,?,?,?,?,?)

+1

테이블 이름에 절대로 정보를 넣지 마십시오. 날짜를 추가 열로 만드십시오. –

답변

0

당신은 아들이 SQLite 데이터베이스로 변경하기 위해선, 변경 DB를 만드는 논리가 최적화되지 않았기 때문에 표시되지 않습니다.

기기에 이전 버전의 데이터베이스가있을 가능성이 높습니다. 앱을 제거했다가 다시 설치하기 만하면됩니다.