首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mysql++如何插入?

mysql++如何插入?
EN

Stack Overflow用户
提问于 2014-02-27 17:21:07
回答 4查看 2.9K关注 0票数 5

我在数据库中插入一些值时遇到了问题。数据库名是用户,表是英雄。我正在做一些mmorpg游戏开发,以学习为目的。

这是mysql代码,可以工作。

代码语言:javascript
复制
INSERT INTO heroes (HeroID,Strenght, Dexterity, Vitality, Wisdom, Inteligence, Luck, Name, Level, XP) VALUES (NULL,  17, 13, 17, 15, 9, 8, 'works', 4, 3750);

但是,当我通过c++通过mysql++尝试时,我会得到错误。

代码:

代码语言:javascript
复制
#include <mysql++/mysql++.h>

#include <iostream>
#include <iomanip>

using namespace std;

int main()
{
// Connect to the database.
mysqlpp::Connection conn(false);

if (conn.connect("users", "localhost",
        "root", "toor")) 
{

    mysqlpp::Query query = conn.query();
   query << "INSERT INTO heroes" <<
    "VALUES (NULL, 17, 13, 17, 15, 9, 8, doSomething,3, 3260);";

    query.execute();
    if (mysqlpp::StoreQueryResult res = query.store()) 
    {
     // nothing to do here
    }

    else 
    {
        cerr << "Failed to get item list: " << query.error() << endl;
        return 2;
    }

    return 0;
}

   else 
    {
    cerr << "DB connection failed: " << conn.error() << endl;
    return 1;
    }
}

我得到的错误是:未能获得项目列表;您的SQL语法出现了错误;请检查与您的MySQL服务器版本对应的手册,以获得在第1行使用“NULL、17、13、17、15、9、8、doSOmething,3,3260”的正确语法。

附注:我发送NULL,因为字段是自动增量(用于ID),我尝试了几乎所有可能的选项,如添加'',分离等等。有人能帮我这行代码,因为我找不到和良好的教程,在这方面有帮助。

提前感谢

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-02-27 17:23:25

您试过在字符串中添加空格吗?

代码语言:javascript
复制
query << "INSERT INTO heroes " <<
    "VALUES (NULL, 17, 13, 17, 15, 9, 8, 'doSomething', 3, 3260);";

此外,正如hmjd所指出的,需要引用doSomething,比如'doSomething'

票数 5
EN

Stack Overflow用户

发布于 2014-02-27 17:23:40

需要引用字符串doSomething

代码语言:javascript
复制
query << "INSERT INTO heroes "
      << "VALUES (NULL, 17, 13, 17, 15, 9, 8, 'doSomething', 3, 3260);";

正如Streppel所指出的,在heroesVALUES之间需要一个空间。

票数 5
EN

Stack Overflow用户

发布于 2014-02-27 17:24:30

如果您的字段是自动递增的,只需在查询中不要提到它,就这样!

但是,您需要为插入查询中的所有字段命名,这实际上是一个最佳实践!

代码语言:javascript
复制
query << "INSERT INTO heroes (fieldName1,fieldName2,...) " <<
"VALUES (17, 13, 17, 15, 9, 8, doSomething,3, 3260);";

其中,fieldname1是您在id字段之后的第一个字段(实际上,您可以使用任意顺序)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22075694

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档