私はQtでプログラムを書いていましたが、最近私はこれらの2つの問題に直面しました。 問題1: 私は1テーブルと4列(ID、簡単、中、ハード)のsqliteデータベースを持っています。すべてのints。だから私は、idが存在するかどうかを確認したいと、このコードを思い付いた:Qt(sqlite値とQVector <T> :: operator []: "index of range")
QSqlQuery queryCheck(db);
queryCheck.prepare("SELECT EXISTS(SELECT 1 FROM players WHERE id=':id' LIMIT 1)");
queryCheck.bindValue(":id", c.getId());
しかし、私は
if(queryCheck.exec())
を実行したとき、私は常にtrueを得ます。私が作成した 、および数字で満たされ、
QVector<QVector<int>> gridBoxUnsolved(9);
for(int outer=0; outer<gridBoxUnsolved.size(); ++outer)
gridBoxUnsolved[outer].resize(9);
と私は1つのランダムな値を変更するには、ほぼすべてのシングル「内側」QVectorを考えランダムに0にいくつかの値を変更したい:
問題20にだから私は、このコードを思い付いた:
int iRand;
qsrand(time(NULL));
for (int i=0;i<9;i++){
iRand = (qrand()%9)+1;
gridBoxUnsolved[i][iRand]=0;
}
しかし、時々、Qtは正常に動作しますが、時間のクラッシュのほとんどと、この返す:のうち「インデックス: ASSERTのQVector ::演算子[]で失敗したことを範囲 "、ファイル/opt/Qt/5.8/gcc_64/include/QtCor e/qvector.h、行437 プログラムが予期せず終了しました。
は、あなたの答えをいただき、ありがとうございます。私が見ている私の2番目の問題はばかげていました。しかし、最初のものでは私は今、異なる種類の問題を抱えています。私は達成しようとしているコード全体を投稿します: – CrystalScrew
if(queryCheck.exec()&& queryCheck.first()){ qDebug()<< "データベース:Player Exist(SELECT Working)"; 成功=真; } else if(queryCreate.exec()){ qDebug()<< "データベース:作成者(INSERT作業中)"; } else { qDebug()<< "データベース:Playerのチェック中にエラーが発生しました:" << queryCheck.lastError(); qDebug()<< "データベース:Playerの作成中にエラーが発生しました:" << queryCreate.lastError(); } return success; } – CrystalScrew
だからあなたが1を返すと言ったように私の人を見つけたら、正しくないと私のコードで動作している別のクエリで彼を作成したいが、それは常に他の人に行くので、私はデータベース一意の要素(私のIDは一意であるため正しい) – CrystalScrew