1

テーブルの列に文字を挿入しようとしています。代わりに、文字の 10 進コードが挿入されます。文字を挿入するにはどうすればよいですか?

詳細:

QString insertSql;
insertSql
    .append("INSERT INTO ")
    .append(" table ")
    .append(" (direction) ")
    .append("VALUES (?)");
QSqlQuery update;
update.prepare(insertSql);

update.bindValue(0, 'F');

bool ex = update.exec();
qDebug() << update.lastError().type() << endl;
qDebug() << update.lastError().databaseText() << endl;
qDebug() << update.lastError().driverText() << endl;

テーブルの方向属性が varchar の場合、文字列 '70' (文字の 10 進コード) が挿入されます。属性 'char' の場合、タイプが短すぎて値を格納できないというエラーが生成されます。

アイデア?

4

1 に答える 1

2

への呼び出しでbindValueは、2 番目の引数は QVariant ですが、QVariant には char を受け入れるコンストラクターがありません。これは標準の変換であり、QChar ではないため、char はおそらく int に変換されます。あなたの QVariant は整数型で、実行中に文字列に変換されますbindValue

QChar を明示的に使用して試すことができます:

update.bindValue(0, QChar('F'));
于 2012-11-27T15:20:19.067 に答える