내 앱 정보 : 교육 성능을 저장합니다. 하나의 데이터베이스에 여러 테이블이 있습니다 (한 테이블은 운동 로그입니다). 날짜는 표의 이름입니다 (예 : 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 (?,?,?,?,?,?,?)
테이블 이름에 절대로 정보를 넣지 마십시오. 날짜를 추가 열로 만드십시오. –