gpt4 book ai didi

java - 数据库中的数据未显示

转载 作者:行者123 更新时间:2023-12-02 11:20:52 26 4
gpt4 key购买 nike

不太确定如何解释这一点,但会尽力而为。

我在我的 Android 项目中创建了一个数据库:

公共(public)类 FootySortItDatabase 扩展了 SQLiteOpenHelper {

private static final String DATABASE_NAME = "FootySortItDatabase";
private static final int DATABASE_VERSION = 1;

public FootySortItDatabase(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}

@Override
public void onCreate(SQLiteDatabase db) {
final String SQL_CREATE_PLAYER_TABLE = "CREATE TABLE " +
PlayerDetails.PlayerTableEntry.TABLE_NAME + "(" +
PlayerDetails.PlayerTableEntry._ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
PlayerDetails.PlayerTableEntry.COLUMN_PLAYER_NAME + " TEXT NOT NULL, " +
PlayerDetails.PlayerTableEntry.COLUMN_PLAYER_NUMBER + " TEXT NOT NULL, " +
PlayerDetails.PlayerTableEntry.COLUMN_IS_PLAYING + " INTEGER NOT NULL " +
");";

db.execSQL(SQL_CREATE_PLAYER_TABLE);
}

我已经制定了以下契约(Contract):

public static final class PlayerTableEntry implements BaseColumns{
public static final String TABLE_NAME = "playerTable";
public static final String COLUMN_PLAYER_NAME = "playerName";
public static final String COLUMN_PLAYER_NUMBER = "playerNumber";
public static final String COLUMN_IS_PLAYING = "isPlaying";
}

我调用一个传递数据库和详细信息数组的方法:

 private SQLiteDatabase playerDatabase;

private Cursor getAllPlayers(){
playerDatabase = ComposeMessage.addPlayerToTheDatabase(playerDatabase, playerDataSet);
return playerDatabase.query(PlayerDetails.PlayerTableEntry.TABLE_NAME,
null,null,null,
null,null,null);
}

public static SQLiteDatabase addPlayerToTheDatabase(SQLiteDatabase playerDatabase, ArrayList<PlayerDetails> listGame) {

for (PlayerDetails i : listGame) {
ContentValues cv = new ContentValues();

cv.put(PlayerDetails.PlayerTableEntry.COLUMN_PLAYER_NAME, i.name);
cv.put(PlayerDetails.PlayerTableEntry.COLUMN_PLAYER_NUMBER, i.number);

playerDatabase.insert(PlayerDetails.PlayerTableEntry.TABLE_NAME, null, cv);
}
return playerDatabase;
}

然后,我将光标传递到我的 RecyclerView 中:

public PlayerListRecyclerViewAdapter(Context context, Cursor cursor, ArrayList<PlayerDetails> aPlayerList,
int count) {
playerDataSet = aPlayerList;
this.pCursor = cursor;
pContext = context;

但是我的 pCursor = 0。这意味着它们在表中没有行?

通过终端,我使用 adb 导航到数据库,在数据库上使用 SQLite3 搜索表的数据,但它不返回任何内容:

sqlite> .tables
android_metadata playerTable
sqlite> select * from playerTable;
sqlite>

当我调试时,我可以在插入部分看到 i.name 和 i.number 有数据并且“它看起来正在插入它”,但是为什么光标是 0 并且当我搜索数据时,为什么是它没有返回任何东西?不知道如何克服这个...

最佳答案

表中有 3 列。它们都不能为空。当您写入数据库时​​,您写入的是 2 列而不是 3 列。因此,插入将失败。
要创建数据库,我建议 Schematic并使用Stetho用于调试。

关于java - 数据库中的数据未显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49923694/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com