如何在C ++ / Qt中将非文字类型附加到字符串?

时间:2017-11-05 18:49:06

标签: c++ qt

我的代码:

QSqlQuery myqry;

    myqry.prepare( "CREATE TABLE IF NOT EXISTS Item (ItemCat VARCHAR(20), ItemId VARCHAR(7) UNIQUE PRIMARY KEY, ItemName VARCHAR(30), ItemBrand VARCHAR(20), ItemModel VARCHAR(10), ItemQuantity INTEGER, ItemPrice DOUBLE)" );

    if( !myqry.exec() )
        qDebug() << myqry.lastError();
    else
        qDebug() << "Table created!";

    QString category, id, name, brand, model, quantity, price;

    myqry.prepare( "INSERT INTO Item (ItemCat, ItemId, ItemName, ItemBrand, ItemModel, ItemQuantity, ItemPrice) VALUES ('"+category+"', '"+id+"', '"+name+"', '"+brand+"', '"+model+"', '"+quantity+"', '"+price+"')" );

    if( !myqry.exec() )
    {
        QMessageBox::information(this, "Problem", "Failed to save the Data" + myqry.lastError());
    }

产生错误:

error: no match for 'operator+' (operand types are 'const char [24]' and 'QSqlError')
         QMessageBox::information(this, "Problem", "Failed to save the Data" + myqry.lastError());
                                                                            ^

我还在标题和cpp文件中包含了#include,并且一旦运行qmake并运行,就会重现相同的错误。我不知道问题是什么,有人可以帮我解决这个问题吗?问题在于运营商+。 :(

2 个答案:

答案 0 :(得分:1)

使用prepare时,最好像(see Documentation)

一样使用它
myqry.prepare("INSERT INTO Item (ItemCat, ItemId, ItemName, ItemBrand, ItemModel, ItemQuantity, ItemPrice) VALUES (:category, :id, :name, :brand, :model, :quantity, :price)");
myqry.bindValue(":category", category);
myqry.bindValue(":id", id);
myqry.bindValue(":name", name);
myqry.bindValue(":brand", brand);
myqry.bindValue(":model", model);
myqry.bindValue(":quantity", quantity);
myqry.bindValue(":price", price);

if(!myqry.exec())
{
 // ...
}

答案 1 :(得分:-1)

您正在尝试使用对象类型(或非文字类型)连接文字。

如果您的值是基本类型,则可以使用std::to_string(value)将非字符串类型附加到string

否则你通常应该寻找一些to_string()方法......

特别是,大多数Qt个对象都有text()个功能。

如果您查看QString documentation,则会看到+ operator仅接受文字类型,例如其他QStringconst char*等等。