我一直在尝试制作一个健身应用程序,它将通过我制作的数据库进行解析,并从我的数据表中提取特定的值。我的表格有经验值(初学者或有经验者)、设备值(负重或无负重)和训练值(例如:俯卧撑)。如果用户是初学者,并且想要重量或任何其他条件,我可以使用这些参数,那么我想根据这些条件来获取训练。我制作了一个数据库助手,并且有使用database.raw query的代码,但是每次我尝试从练习数据表(我的数据表的名称)中选择设备和经验进行查询时,它都会给我相同的错误。下面是eh database helper的代码和我正在引用的特定方法(getalldata)。同时也显示了错误。任何帮助都很好,谢谢
public static final String TABLE_EXERCISES = "exercises";
public static final String COLUMN_ID = "_id";
public static final String COLUMN_EXPERIENCE = "experience";
public static final String COLUMN_EQUIPMENT = "equipment";
public static final String COLUMN_WORKOUT = "workout";
public static final String DATABASE_NAME = "exercises.db";
private static final int DATABASE_VERSION = 1;
// Database creation sql statement
public MySQLiteHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase database) {
database.execSQL("create table " + TABLE_EXERCISES +" (_id INTEGER PRIMARY KEY AUTOINCREMENT,experience TEXT, equipment TEXT,workout TEXT)");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
Log.w(MySQLiteHelper.class.getName(),
"Upgrading database from version " + oldVersion + " to "
+ newVersion + ", which will destroy all old data");
db.execSQL("DROP TABLE IF EXISTS "+TABLE_EXERCISES);
onCreate(db);
}
public boolean insertData(String experience, String equipment, String workout){
SQLiteDatabase db = this.getWritableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put(COLUMN_EXPERIENCE, experience);
contentValues.put(COLUMN_EQUIPMENT, equipment);
contentValues.put(COLUMN_WORKOUT, workout);
long result = db.insert(TABLE_EXERCISES, null, contentValues);
if(result == -1)
return false;
else
return true;
}
public Cursor getAllData(){
SQLiteDatabase db = this.getWritableDatabase();
Cursor res = db.rawQuery("SELECT equipment, experience FROM exercises WHERE experience = ? AND equipment = ?", new String[] {"beginner", "weights"});
//Cursor res = db.rawQuery("select * from " + TABLE_EXERCISES, null);
if (res.moveToFirst()) {
return res;
}
return null;
}
}
----------
Error:
E/CursorWindow: Failed to read row 1, column 2 from a CursorWindow which has 140 rows, 2 columns.
D/AndroidRuntime: Shutting down VM
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.hfad.workoutmaker, PID: 32245
java.lang.IllegalStateException: Couldn't read row 1, col 2 from CursorWindow. Make sure the Cursor is initialized correctly before accessing data from it.
at android.database.CursorWindow.nativeGetString(Native Method)
暂无答案!
目前还没有任何答案,快来回答吧!