我在插入值时遇到了一些麻烦 SQLite database
这就是我创建数据库的方式:
if(query.exec("CREATE TABLE IF NOT EXISTS visitorItemsV4 (channelID, itemId, itemName, itemPic, itemPrice, itemMeta);")) {
    qDebug() << "Table `visitorItemsV4` created.";
}
这就是我插入新项目的方式:
if (db.isOpen()) {    
    qDebug() << itemId;
    qDebug() << itemName;
    qDebug() << itemPic;
    qDebug() << itemPrice;
    QSqlQuery query(db);
    ret = query.exec(QString("insert or replace into visitorItemsV4 values ('%1', '%2', '%3', '%4', '%5', '%6');")
    .arg(channel).arg(itemId).arg(itemName).arg(itemPic).arg(itemPrice).arg(itemPrice));
    qDebug() << query.lastError();
    if (ret) {
        qDebug() << "saved item";
    }
}
问题是itemPrice始终获取值%5并itemMeta获取值%6
itemPrice变量包含499所以我期望这是价值itemPrice和itemMeta.
我有什么想法我做错了吗?
永远不要尝试通过将值直接放入字符串来创建SQL命令; 这不仅会产生格式化问题,还会允许SQL注入.
使用参数代替:
query.prepare("insert or replace into visitorItemsV4 values (?,?,?,?,?,?)");
query.bindValue(0, channel);
query.bindValue(1, itemId);
query.bindValue(2, itemName);
query.bindValue(3, itemPic);
query.bindValue(4, itemPrice);
query.bindValue(5, itemPrice);
ret = query.exec();
| 归档时间: | 
 | 
| 查看次数: | 111 次 | 
| 最近记录: |