//按扭事件
QSqlQuery query;
query.exec("select * from fileinfo");
bool result = query.next();
if(result == false)
query.exec("create table fileinfo(id,filename,status);");
query.exec("select id from fileinfo");
while(query.next())
record_number_Line = query.value(0).toInt();
QString insertdata = "insert into fileinfo(id,filename,status) values('" + QString::number(record_number_Line);
insertdata += "','" + QString::fromAscii(values1) + "','0');";
query.exec(insertdata);
qDebug()<
//另一個按扭事件:
QSqlQuery query;
//修改檔案標記為未讀取狀態
QString updatedata = "update fileinfo set status='1' where id='" + QString::number(record_number_Line) + "';";
qDebug()< query.exec(updatedata);
編譯執行結果:
"insert into fileinfo(id,filename,status) values('8','J140809008','0');"
"update fileinfo set status='1' where id='8';"
超級終端中執行:sqlite3 SysInfo.db
sqlite> select * from fileinfo;
1|J140808001|1
2|J140808002|1
3|J140808003|1
4|J140808004|1
5|J140808005|1
6|J140808006|1
7|J140808007|1
8|J140809008|1
sqlite>
結果沒有例外。
將此代碼使用arm-linux-gcc交叉編譯后生成ARM構架可執行代碼復制到板子上運行:
"insert into fileinfo(id,filename,status) values('9','J700101009','0');"
"update fileinfo set status='1' where id='9';"
Segmentation fault
應用程式黑屏。
再次使用ARM板上的超級終端執行:sqlite3 SysInfo.db
sqlite> select * from fileinfo;
1|J140808001|1
2|J140808002|1
3|J140808003|1
4|J140808004|1
5|J700101005|1
6|J700101006|1
7|J700101007|0
8|J700101008|1
9|J700101009|0
sqlite> update fileinfo set status='1' where id='9';
sqlite> select * from fileinfo;
1|J140808001|1
2|J140808002|1
3|J140808003|1
4|J140808004|1
5|J700101005|1
6|J700101006|1
7|J700101007|0
8|J700101008|1
9|J700101009|1
sqlite>
問題是:在QT中執行update,在PC上運行結果正常,交叉編譯以后在ARM板上執行update命令時出現Segmentation faul
但是在ARM板的超級終端上運行sqlite3 xx.db執行update命令時結果正常。
請問這是哪里出現的錯誤?
QString updatedata = QString("delete from fileinfo where id='") + QString::number(record_number_Line) + QString("';");
delete陳述句也同樣的錯誤。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/117260.html
標籤:數據庫及相關技術
