我通过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]'类型的右手操作数
答案 0 :(得分:0)
您正在尝试将QByteRef设置为QString。
我想你可能想要一个QList和arrayresult.append(结果)。 或者如果你想要一个QByteArray与所有结果的concat一起使用arrayresult + = result。
答案 1 :(得分:0)
您可以构建要初始化QString
的{{1}}。要转换为QByteArray
到QString
,您可以执行
QByteArray
如果编码是Latin1。
您也可以使用追加
QByteArray array_ = string_.toLatin1();
这是一个重载功能。
将字符串str追加到此字节数组。 Unicode数据是 使用QString :: toAscii()转换为8位字符。
如果QString包含非ASCII Unicode字符,请使用此字符 功能可能导致信息丢失。你可以禁用它 通过在编译时定义QT_NO_CAST_TO_ASCII来起作用 应用。然后,您需要调用QString :: toAscii()(或 QString :: toLatin1()或QString :: toUtf8()或QString :: toLocal8Bit()) 显式,如果你想将数据转换为const char *。
QByteArray & QByteArray::append ( const QString & str )
与append
运算符相同。
答案 2 :(得分:0)
您可以使用toLatin1()
的{{3}}功能执行以下操作。
// ...
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 >
来包含结果,或者您可以QString将最后一个结果项append
添加到最终结果对象中。