2012-09-29 80 views
0

我通過selectall查詢得到數據庫的結果,我希望將結果保存在數組中並通過套接字發送。Qt數組QString

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

您正嘗試將QByteRef設置爲QString的右手操作數。

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

0

你可以建立QString你想初始化QByteArray。爲了再從QString轉換爲QByteArray,你可以做

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+運算符相同。

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 >包含的結果,或者你可以append最後的結果項目到您的最終結果的對象。