2015-12-02 37 views
-1

我是wxWidgets和sqlite3的初學者。 我正嘗試在列表視圖中顯示錶中的數據。 該表有幾行和三列,我已經創建並在列表視圖中插入了列。無法使用來自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):斷言「斷言失敗」在Item()中失敗:wxListBase :: Item中的無效索引「 如果我註釋掉兩個'list - > SetItem(...)'行,我不會看到這個錯誤,並且看到數據在第一列中顯示的表的第二行中。 我該如何解決這個問題?

+0

檢查SQLite函數可能返回的錯誤,尤其是'sqlite3_prepare_v2'。請注意,通過在循環之前調用'sqlite3_stmt_step',可以跳過第一行。 'sqlite3_column_text'返回的字符串只有在語句被分步/結束之前纔有效,因此請確保您正在複製它們。 –

回答

0

爲什麼使用i+1i+2指數SetItem()?這顯然是錯誤的,列編號爲0,1和2.

相關問題