13

私はSQLiteを使用して、テーブルに挿入しています。フォローウイング

QSqlQuery testQuery(QString("INSERT INTO test(testcol) VALUES(?)"));
testQuery.bindValue(0, someQStringObg);
testQuery.exec();

動作しますが、

QSqlQuery testQuery(QString("INSERT INTO test(testcol) VALUES(:val)"));
testQuery.bindValue(":val", someQStringObg);
testQuery.exec();

しないでください。testQuery.lastError().text() はNo query Unable to fetch 行を返します

どうしてこうなったのかさっぱり分からないけど、どうしても知りたい。

4

1 に答える 1

15

公式の例として準備を使用してください:

QSqlQuery testQuery;
testQuery.prepare("INSERT INTO test(testcol) VALUES(:val)");
testQuery.bindValue(":val", someQStringObj);
testQuery.exec();

エラーの理由は、対応するプレースホルダーにバインドする前にクエリが実行されたためです。コンストラクターのドキュメントの関連部分を見ることができます:

クエリが空の文字列でない場合は実行されます。

于 2013-12-26T14:30:04.543 に答える