我在数据库中插入一些值时遇到了问题。数据库名是用户,表是英雄。我正在做一些mmorpg游戏开发,以学习为目的。
这是mysql代码,可以工作。
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++尝试时,我会得到错误。
代码:
#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),我尝试了几乎所有可能的选项,如添加'',分离等等。有人能帮我这行代码,因为我找不到和良好的教程,在这方面有帮助。
提前感谢
发布于 2014-02-27 17:23:25
您试过在字符串中添加空格吗?
query << "INSERT INTO heroes " <<
"VALUES (NULL, 17, 13, 17, 15, 9, 8, 'doSomething', 3, 3260);";此外,正如hmjd所指出的,需要引用doSomething,比如'doSomething'。
发布于 2014-02-27 17:23:40
需要引用字符串doSomething:
query << "INSERT INTO heroes "
<< "VALUES (NULL, 17, 13, 17, 15, 9, 8, 'doSomething', 3, 3260);";正如Streppel所指出的,在heroes和VALUES之间需要一个空间。
发布于 2014-02-27 17:24:30
如果您的字段是自动递增的,只需在查询中不要提到它,就这样!
但是,您需要为插入查询中的所有字段命名,这实际上是一个最佳实践!
query << "INSERT INTO heroes (fieldName1,fieldName2,...) " <<
"VALUES (17, 13, 17, 15, 9, 8, doSomething,3, 3260);";其中,fieldname1是您在id字段之后的第一个字段(实际上,您可以使用任意顺序)。
https://stackoverflow.com/questions/22075694
复制相似问题