无法使用sqlite3数据库表的所有行中的数据填充列表,错误:跟踪/断点陷阱(核心转储)

Cannot populate the list with data from all rows of sqlite3 database table ,error: Trace/breakpoint trap(core dumped)

本文关键字:跟踪 错误 断点 转储 核心 陷阱 列表 数据 sqlite3 数据库 填充      更新时间:2023-10-16

我是wxWidgets和sqlite3的初学者。我正试图在列表视图中显示表中的数据。该表有几行三列,我已经在列表视图中创建并插入了这些列。

以下是我遇到问题的代码部分:

int i = 0;
sqlite3 *db;
sqlite3_stmt *stmt;
sqlite3_stmt *cstmt;
const char* sql = "SELECT *FROM List";
sqlite3_open("MEMBERS.db",&db);
sqlite3_prepare_v2(db,sql,-1,&stmt,NULL);
sqlite3_step(stmt);
while(sqlite3_step(stmt) == SQLITE_ROW)
{
 list -> InsertItem(i,sqlite3_column_text(stmt,i));
 list->SetItem(i,i+1,sqlite3_column_text(stmt,i+1),-1);
 list ->SetItem(i,i+2,sqlite3_column_text(stmt,i+2),-1);
 i++;
}
sqlite3_finalize(stmt);

每当我编译并尝试运行它时,我都会收到一个错误,说"/src/common/list.cpp(317):assert"assert failure"在Item()中失败:wxListBase::Item中的无效索引"如果我注释掉了两行"list->SetItem(…)",我不会得到这个错误,并且我会看到表的第二行中的数据显示在第一列中。我该如何解决这个问题?

为什么使用i+1i+2作为SetItem()索引?这显然是错误的,列编号为0、1和2。