以前的sql损坏了忘记格式,会C++和mysql的进来看看
问题描述:
这个C++代码,能还原原来的sql吗?
void CTournamentPvP::InsertRongYuPoint(LPCHARACTER ch)
{
int points = ch->GetQuestFlag(KILLPLAYER);
std::auto_ptr<SQLMsg> pMsg(DBManager::instance().DirectQuery("SELECT pid FROM %s WHERE pid = '%d'", MYSQL_DATABASE_RANKING, ch->GetPlayerID()));
if (pMsg->Get()->uiNumRows > 0)
{
DBManager::instance().DirectQuery("UPDATE %s SET total_points = '%d' WHERE pid = '%d'", MYSQL_DATABASE_RANKING, points, ch->GetPlayerID());
}
else
{
DBManager::Instance().DirectQuery("INSERT INTO %s (memberName,memberEmpire, memberPoints,PID) VALUES('%s','%d', '%d','%d')", MYSQL_DATABASE_RANKING, ch->GetName(),ch->GetEmpire() ,points,ch->GetPlayerID());
}
}
答
SELECT pid FROM 表名 WHERE pid = ''
UPDATE 表名 SET total_points = '' WHERE pid = ''
INSERT INTO 表名 (memberName,memberEmpire, memberPoints,PID) VALUES('','', '','')
SQL语句包含以上3条,涉及到两个参数%s和%d,其中%s代表的是表名,%d应该是一个外键id。
上面c++的代码逻辑是根据一个id查询当前记录是否存在,如果存在进修改total_points ;如果不存在,插入一条新的记录。