0

我通过 selectall 查询从 db 获取结果,我想将结果保存在数组中并通过套接字发送。

db.open();

QSqlQuery *selectall = new QSqlQuery(db);
selectall->prepare("select * from phone_table");
selectall->exec();
selectall->first();
QString result;
QByteArray arrayresult;
int index = 0;
while (selectall->next())
{
    index += 1;
    // qint16 id = selectall->value(0).toString();
    QString name_ = selectall->value(1).toString();
    QString surname = selectall->value(2).toString();
    QString phone_number = selectall->value(3).toString();
    result = "*"+ name_+"*"+surname+"*"+phone_number;
    arrayresult[index] = result;
}

我收到此错误二进制“=”:未找到采用“const char [16]”类型的右侧操作数的运算符

4

3 回答 3

0

您正在尝试将 QByteRef 设置为 QString。

我想你可能想要一个 QList 和 arrayresult.append(result)。或者,如果你想要一个 QByteArray 与所有结果的 concat 使用 arrayresult+= 结果。

于 2012-09-29T11:40:13.300 回答
0

您可以构建QString您想要初始化的QByteArray. 然后转换QStringQByteArray,你可以做

QByteArray array_ = string_.toLatin1();

如果编码是 Latin1。

您也可以使用附加

QByteArray & QByteArray::append ( const QString & str )

这是一个过载功能。

将字符串 str 附加到此字节数组。Unicode 数据使用 QString::toAscii() 转换为 8 位字符。

如果 QString 包含非 ASCII Unicode 字符,使用此函数可能会导致信息丢失。您可以通过在编译应用程序时定义 QT_NO_CAST_TO_ASCII 来禁用此功能。然后,如果要将数据转换为 const char *,则需要显式调用 QString::toAscii()(或 QString::toLatin1() 或 QString::toUtf8() 或 QString::toLocal8Bit())。

append与操作员做同样的事情+

于 2013-11-09T09:18:27.197 回答
0

您可以使用.QString

// ...

QString result = QString( "*%1*%2*%3" ).arg( name_ )
                                       .arg( surname )
                                       .arg( phone_number );

QByteArray resultArray = result.toLatin1();
// Or ...
// QByteArray resultArray = result.toLocal8Bit();
// QByteArray resultArray = result.toUtf8();

并且您应该使用QList< QByteArray >包含结果的 for,或者您可以append将最后一个结果项添加到最终结果对象中。

于 2015-05-26T15:23:22.320 回答