首页 > 代码库 > sqlite 遇到的问题

sqlite 遇到的问题

#define UPDATE_PROPINFO_SQL        "UPDATE "USER_PROP_TABLE" SET " PLAYER_PROPS" = ‘%s‘ WHERE id = %d;"
#define DEFAULT_PLAYER_ID                   1

 

下面这个方法一直报语法错误,让人很抓狂。

int Player::updatePropInfo()
{
    char* sql = sqlite3_mprintf(UPDATE_PROPINFO_SQL,getPropsTimeStr().c_str(),DEFAULT_PLAYER_ID);
    string retStr = sql;
    sqlite3_free(sql);
    return GSQLITE3->exec(sql, retStr);
}

string Player::getPropsTimeStr()
{
    string propsTimeStr = "";
    for (int i = 0; i < m_propsTimes.size() ;i++ )
    {
        char temp[64] = {0};
        sprintf(temp,"%d",m_propsTimes[i]);
        propsTimeStr.append(temp);
        if (i < (m_propsTimes.size() - 1))
        {
            propsTimeStr.append(" ,");  //TIP :这个空格不能省
        }
    }
    propsTimeStr.append("");
    return propsTimeStr;
}

    vector<int>         m_propsTimes; //一个道具堆叠数目的数组

最后发现是在上边的propsTimeStr.append(" ,");这句中 逗号前面的空格没有写,空格坑死人。

sqlite 遇到的问题