Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/157.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Qt(sqlite值和QVector<;T>;::运算符[]:“:”索引超出范围“)_C++_Qt_Sqlite_Qvector - Fatal编程技术网

C++ Qt(sqlite值和QVector<;T>;::运算符[]:“:”索引超出范围“)

C++ Qt(sqlite值和QVector<;T>;::运算符[]:“:”索引超出范围“),c++,qt,sqlite,qvector,C++,Qt,Sqlite,Qvector,我一直在用Qt编写一个程序,最近我遇到了这两个问题。 问题1: 我有一个sqlite数据库,有1个表和4个列(id、easy、medium、hard)。所有ints。因此,我想检查id是否存在,并得出以下代码: QSqlQuery queryCheck(db); queryCheck.prepare("SELECT EXISTS(SELECT 1 FROM players WHERE id=':id' LIMIT 1)"); queryCheck.bindValue(":

我一直在用Qt编写一个程序,最近我遇到了这两个问题。 问题1: 我有一个sqlite数据库,有1个表和4个列(id、easy、medium、hard)。所有ints。因此,我想检查id是否存在,并得出以下代码:

    QSqlQuery queryCheck(db);
    queryCheck.prepare("SELECT EXISTS(SELECT 1 FROM players WHERE id=':id' LIMIT 1)");
    queryCheck.bindValue(":id", c.getId());
int iRand;
qsrand(time(NULL));
for (int i=0;i<9;i++){
    iRand = (qrand()%9)+1;
    gridBoxUnsolved[i][iRand]=0;
}
但是当我跑的时候

    if(queryCheck.exec())
我总是能实现

问题2: 我创建了一个

QVector<QVector<int>> gridBoxUnsolved(9);
for(int outer=0; outer<gridBoxUnsolved.size(); ++outer)
    gridBoxUnsolved[outer].resize(9);
QVector gridBoxUnsolved(9);
对于(int-outer=0;outer请尝试以下方法:

QSqlQuery queryCheck(db);
queryCheck.prepare("SELECT 1 FROM players WHERE id=':id' ");
queryCheck.bindValue(":id", c.getId());

if(queryCheck.exec() && queryCheck.first()) // you found your guy
第二个问题-拆下中的+1

iRand = (qrand()%9)+1;

qrand()%9
会给你一个从0到8的数字,这就是你想要的。

所以我找到了问题的解决方案

QSqlQuery query(db);
query.prepare("SELECT COUNT(*) AS N FROM table WHERE id=:id ");
然后,您执行此操作以检查:

query.exec();
query.next();
int N=query.value(0).toInt();
if(N) {
    // You found the record
}

谢谢你的回答。我看到的第二个问题很傻。但是第一个问题我现在有一个不同类型的问题。我向你发布了我试图实现的全部代码:if(queryCheck.exec()&&queryCheck.first()){qDebug()所以,如果它像您所说的那样找到我的人,我想返回1,如果不是,我想用另一个正确的查询创建他,并在我的代码中工作,但它总是转到其他位置,所以我从数据库中得到关于唯一元素的错误(这是正确的,因为我的id是唯一的)您的
queryCreate
看起来像什么?qsqlqueryqueryquerycreate(db);queryCreate.prepare(“插入播放器(id,easy,medium,hard)值(:id,:easy,:medium,:hard)”);queryCreate.bindValue(:id,c.getId());queryCreate.bindValue(:easy,0);queryCreate.bindValue(:medium,0);queryCreate.bindValue(:hard,0);