【问题标题】:how to insert variable's value in SQlite Database in Qt cpp如何在 Qt cpp 的 SQlite 数据库中插入变量的值
【发布时间】:2017-12-08 16:14:56
【问题描述】:

我正在使用 Qt 并且我已经编写了 c++ 代码,我已经连接了 sqlite 数据库。我想在数据库中插入名称

std::string name="Hello";
qry.prepare( "INSERT INTO s_no (Name,Status) VALUES ('name','1' )");
if( !qry.exec() )
    qDebug() << qry.lastError();
else
    qDebug( "Inserted!" ); 

但在 db 中我只找到名称,而不是你好;

请帮助我..提前非常感谢您

【问题讨论】:

  • qry.prepare("INSERT INTO s_no (Name,Status) VALUES ('"+name+"','1')");我也试过了

标签: c++ mysql qt sqlite


【解决方案1】:

尝试将 name 设为 QString。您可以使用 QString name2 = QString::fromStdString(name); 将 std::string 更改为 QString。不要忘记包括:#include &lt;QString&gt;

【讨论】:

  • 试试这个:qry.prepare( "INSERT INTO s_no2 (Name, Status) VALUES (:name, '1')" ); qry.bindValue( ":name", name);.
  • qry.prepare("INSERT INTO s_no (serial,status)" "VALUES (?,?)"); qry.addBindValue(name); qry.addBindValue(1);这有效...感谢您的回复
【解决方案2】:

C++ 和 SQL 是两种不同的编程语言,在不同的环境中执行。这意味着 C++ 对象在 SQL 中是不可见的。

理论上,可以构造包含 SQL 命令的字符串,以便将 name 变量的值直接插入其中:

qry.prepare("INSERT INTO s_no (Name,Status) VALUES('" + name + "', '1')");  // don't do this

但是,如果名称中包含引号,这将会崩溃。使用附加代码可以转义引号,但将变量值放入 SQL 查询的更好方法是使用参数:

qry.prepare("INSERT INTO s_no (Name,Status) VALUES(?, '1')");
qry.bindValue(0, name);

(这是在查询中使用 blob 值的唯一合理方式。)

【讨论】:

    猜你喜欢
    • 2013-11-14
    • 2018-11-24
    • 1970-01-01
    • 1970-01-01
    • 2020-11-11
    • 1970-01-01
    • 1970-01-01
    • 2012-09-09
    • 1970-01-01
    相关资源
    最近更新 更多