【发布时间】:2019-04-21 23:17:07
【问题描述】:
我目前正在 android studio 中设置一个 dungeons & Dragons 移动应用程序,我希望能够查看我当前保存到数据库“CharacterDB”中的角色的值。我怎样才能以这样的方式实现它,让我找到值以将它们拉出来以备后用? 任何帮助或建议都会大有帮助,谢谢。
我已经尝试使用查询方法来选择当前行中的项目,但无济于事。每当我尝试使用游标设置正确的查询时,它会说每当我尝试循环游标时游标将为 NULL。
/////////////////// 我目前拥有的 //////////////////////p>
CharacterBaseHelper helper = new CharacterBaseHelper(getContext());
SQLiteDatabase Character = helper.getReadableDatabase();
ContentValues values = new ContentValues();
//Inserting test values into the Database
values.put(CharacterDB.CharacterTable.CharactersColumns.NAME,
"Character");
values.put(CharacterDB.CharacterTable.CharactersColumns.CLASS_NAME,
"Fighter" );
values.put(CharacterDB.CharacterTable.CharactersColumns.RACE, "Human" );
//saving the row ID for late use
Long newCharacterRowId =
Character.insert(CharacterDB.CharacterTable.TABLE_NAME, null , values);
///////////////////////////////////////
然后这是我为值和助手类创建的表
//////////////////////////////////////
public final class CharacterTable
{
public static final String TABLE_NAME = "character";
public final class CharactersColumns implements BaseColumns
{
public static final String NAME = "name";
public static final String CLASS_NAME = "className";
public static final String RACE = "race";
}
//////////////////
助手类
//////////////////
public class CharacterBaseHelper extends SQLiteOpenHelper {
private static final int VERSION = 1;
private static final String DATABASE_NAME = "characterDB.db";
public CharacterBaseHelper(Context context){
super(context, DATABASE_NAME, null, VERSION);
}
@Override
public void onCreate(SQLiteDatabase db)
{
db.execSQL(
"create table " + CharacterTable.TABLE_NAME + "(" + " _id integer primary
key autoincrement, "
+ CharacterTable.CharactersColumns.NAME
+ "," + CharacterTable.CharactersColumns.CLASS_NAME
+ "," + CharacterTable.CharactersColumns.RACE + ")");
///////////////////
最后,我之前尝试过的
//////////////////
String[] projection = {
BaseColumns._ID,
CharacterDB.CharacterTable.CharactersColumns.NAME,
CharacterDB.CharacterTable.CharactersColumns.HIT_DICE,
};
String selection = CharacterDB.CharacterTable.CharactersColumns.NAME + " = ?";
String[] selectionArgs = { "Character" };
String sortOrder =
CharacterDB.CharacterTable.CharactersColumns.HIT_DICE + " DESC";
Cursor cursor = Character.query(
CharacterDB.CharacterTable.TABLE_NAME, // The table to query
projection, // The array of columns to return (pass null to get all)
selection, // The columns for the WHERE clause
selectionArgs, // The values for the WHERE clause
null, // don't group the rows
null, // don't filter by row groups
sortOrder // The sort order
);
List item = new ArrayList<>();
while(cursor.moveToNext()) {
long itemId = cursor.getLong(
cursor.getColumnIndexOrThrow(CharacterDB.CharacterTable.CharactersColumns._ID));
item.add(itemId);
}
cursor.close();
我一直试图获得的是从数据库中读取新数据并显示它的成功方法,以便用户可以看到他们角色的最终结果。
【问题讨论】:
标签: android database android-sqlite