使用c+;将特定输入插入数据库+;sqlite 我在C++中很新,想知道是否有人能帮我写出这段代码,基本上没有错误,但是我想做的是当用户输入他们的名字、性别、种族时,它会把它保存到一个数据库中,它创建数据库但不创建表,也不插入值名称性别种族

使用c+;将特定输入插入数据库+;sqlite 我在C++中很新,想知道是否有人能帮我写出这段代码,基本上没有错误,但是我想做的是当用户输入他们的名字、性别、种族时,它会把它保存到一个数据库中,它创建数据库但不创建表,也不插入值名称性别种族,c++,sqlite,C++,Sqlite,使用c+;将特定输入插入数据库+;sqlite 我在C++中很新,想知道是否有人能帮我写出这段代码,基本上没有错误,但是我想做的是当用户输入他们的名字、性别、种族时,它会把它保存到一个数据库中,它创建数据库但不创建表,也不插入值名称性别种族 void Intro() { sqlite3 *db; sqlite3_stmt * st; string sql3; cout << "Enter the name of your hero:\n"; c

使用c+;将特定输入插入数据库+;sqlite 我在C++中很新,想知道是否有人能帮我写出这段代码,基本上没有错误,但是我想做的是当用户输入他们的名字、性别、种族时,它会把它保存到一个数据库中,它创建数据库但不创建表,也不插入值名称性别种族

void Intro()
{

sqlite3 *db;
sqlite3_stmt * st;
string sql3;



    cout << "Enter the name of your hero:\n";
    cin >> name;
    cout << "Enter hero sex: (M/F)\n";
    cin >> sex;
    cout << "Enter hero race: (e.g dwarf,elf,human)\n";
    cin >> race;

   sql3 = "CREATE TABLE PERSONS("  
         "ID INT PRIMARY        KEY      NOT NULL," 
         "NAME         TEXT     NOT NULL," 
         "SEX          TEXT     NOT NULL," 
         "RACE         TEXT     NOT NULL,"

   ;
  string sql = "INSERT INTO PERSONS (name,sex,race) VALUES (" + name + ',' + sex + ',' + race + ");";

    if(sqlite3_open("pw.db", &db) == SQLITE_OK)
    {
        sqlite3_prepare( db, sql.c_str(), -1, &st, NULL);
        sqlite3_bind_text(st, 1, name.c_str(), name.length(), SQLITE_TRANSIENT);
        sqlite3_bind_text(st, 2, sex.c_str(), sex.length(), SQLITE_TRANSIENT);
        sqlite3_bind_text(st, 3, race.c_str(), race.length(), SQLITE_TRANSIENT);
        sqlite3_step( st );
    }
void Intro()
{
sqlite3*db;
sqlite3_stmt*st;
字符串sql3;
姓名;
不能>性;
种族;
sql3=“创建表人员(”
ID INT主键不为空
名称文本不为空
性别文本不为空
竞赛文本不为空
;
string sql=“在人员(姓名、性别、种族)值中插入(“+name+”、“+sex+”、“+race+”)”;
如果(sqlite3_打开(“pw.db”、&db)==SQLITE_正常)
{
sqlite3_prepare(db,sql.c_str(),-1,&st,NULL);
sqlite3_bind_text(st,1,name.c_str(),name.length(),SQLITE_TRANSIENT);
sqlite3_bind_text(st,2,sex.c_str(),sex.length(),SQLITE_TRANSIENT);
sqlite3_绑定_文本(st,3,race.c_str(),race.length(),SQLITE_TRANSIENT);
sqlite3_步骤(st);
}

> p>我在C++的SQLite中并不擅长,但是我可以看到你准备好的语句出现了什么问题。你应该在 INSERT /COM>语句中使用<代码> >代码>占位符,然后将实际值绑定到:

if (sqlite3_open("pw.db", &db) == SQLITE_OK)
{
    string sql = "INSERT INTO PERSONS (name, sex, race) VALUES (?, ?, ?);";
    int rc = sqlite3_prepare(db, sql.c_str(), -1, &st, NULL);
    if (rc == SQLITE_OK)
    {
        sqlite3_bind_text(st, 1, name.c_str(), name.length(), SQLITE_TRANSIENT);
        sqlite3_bind_text(st, 2, sex.c_str(),  sex.length(),  SQLITE_TRANSIENT);
        sqlite3_bind_text(st, 3, race.c_str(), race.length(), SQLITE_TRANSIENT);
        sqlite3_step(st);
        sqlite3_finalize(st);
    }
}

仍然停留在这个问题上:(所有函数调用都必须是。