我正在尝试组建一个SQL数据库,但实际上并不知道如何使它工作。目的是有多个列,一些有整数,有些在单元格中有字符串。对于这个应用程序,我希望重复是一个整数和练习成为一个字符串。以下是代码的相关部分:
public static final String KEY_ROWID = "_id";
public static final String KEY_DATE = "date";
public static final String KEY_EXERCISE = "exercise";
public static final String KEY_REPS = "repetitions";
private static final String DATABASE_CREATE = "create table " + DATABASE_TABLE + " ("
+ KEY_ROWID + " integer primary key autoincrement, "
+ KEY_DATE + " text not null, "
+ KEY_EXERCISE + " text not null, "
+ KEY_REPS + " int not null, "
public long createExercise(String exercise, int reps) {
ContentValues initialValues = new ContentValues();
initialValues.put(KEY_DATE, date);
initialValues.put(KEY_EXERCISE, exercise);
initialValues.put(KEY_REPS, reps);
return mDb.insert(DATABASE_TABLE, null, initialValues);
}
我使用测试字符串将数据放入此表中。然后我尝试使用以下查询来提取数据:
public Cursor graphQuery(String exercise, String workout) {
return mDb.query(DATABASE_TABLE, new String[] {KEY_DATE, KEY_REPS}, null, null,
null, null, null);
从那里我尝试将数据放入数字数组但它给我一个错误。它告诉我在我声明时将KEY_REPS作为数字。但是,如果我将KEY_REPS声明为数字,则不允许我构建我的数据库。
Cursor cursor = mDbHelper.graphQuery(currentexercise, currentworkout);
startManagingCursor(cursor);
Number[] reps = new Number[]{workoutDbAdapter.KEY_REPS}; //error here
我觉得我错过了如何创建数据库的关键部分。有人可以帮忙吗?
我试图遵循的书中的代码(除了使用整数)(来自对第一个答案的评论)
private void fillData() {
Cursor remindersCursor = mDbHelper.fetchAllReminders();
startManagingCursor(remindersCursor);
// Create an array to specify the fields we want (only the TITLE)
String[] from = new String[]{RemindersDbAdapter.KEY_TITLE};
话虽这么说,如果有人知道一个好的网站,它教授SQLite,因为它适用于Android,这将是非常棒的。我能找到的唯一一个是通用SQL站点,它们不是很有帮助。
答案 0 :(得分:2)
Cursor cursor = mDbHelper.graphQuery(currentexercise, currentworkout);
startManagingCursor(cursor);
Number[] reps = new Number[]{WorkoutDbAdapter.KEY_REPS}; //error here
这里的代码没有做(我认为)你想要的。您需要迭代光标并从那里获取数据。我很确定,如果您按照Android示例代码使用数据库,则WorkoutDbAdapter.KEY_REPS是一个包含代表列名称的字符串常量。
尝试做这样的事情:
List<Number> allReps = new ArrayList<Number>();
Cursor cursor = mDbHelper.graphQuery(currentexercise, currentworkout);
while (cursor.moveToNext()) {
int reps = cursor.getInt(cursor.getColumnIndexOrThrow(mDbHelper.KEY_REPS));
allReps.add(reps);
}
Number[] repsArray = allReps.toArray(new Number[]{});
// do stuff with repsArray and don't forget to close cursor