一些数据库逻辑,检索正确的条目

时间:2012-08-15 23:59:12

标签: java android sql database

关于我首先尝试做什么的一点细节。 我有一个在线游戏系统,用户写一个单词,这会被发布到一个带有一些值的数据库。一切正常。

这是一个数据库条目示例:

uniqueID   victim      rival    wordguess   won
   6      607260120   504374351     Gg       0

现在问题是,许多受害者可以与许多竞争对手展开游戏,受害者如何检查他们是否有针对他们的游戏,以及他们是否发起了针对某人的游戏?

我有两个PHP文件,目前用于检查这些内容:

$query = "SELECT `rival` FROM currentgames WHERE `victim` = '$victim'";
echo $row["rival"].",";

与受害者相反的方式。

现在在我的Java中,我正在检查listarray适配器中的当前值,如下所示:

for (int i = 0;i<NetPlay.rivalArray.length-1;i++)
        {
            Log.i("VICTIM ARRAY DATA ", NetPlay.rivalArray[i]);

            if (NetPlay.rivalArray[i].equals(f.id))
            {
                ingame = true;
                break;

            }
            else
            {
                ingame = false;

            }
        }

        for (int i = 0;i<NetPlay.victimArray.length-1;i++)
        {
            Log.i("RIVAL ARRAY DATA ", NetPlay.victimArray[i]);

            if (NetPlay.victimArray[i].equals(NetPlay.myId))
            {
                battle = false;
                break;
            }
            else
            {
                battle = true;

            }

        }

        if (battle.equals(false))
        {
            battleBtn.setVisibility(View.INVISIBLE);
        }
        else 
        {
            battleBtn.setVisibility(View.VISIBLE);
        }

        if (ingame.equals(true))
        {
            newgameBtn.setVisibility(View.INVISIBLE);
        }
        else 
        {
            newgameBtn.setVisibility(View.VISIBLE);
        }

奇怪的是,我可以让玩家展示他们是否已经初始化了对手的比赛,从而隐藏了“新游戏”按钮,但是我无法让“接受游戏”按钮正常工作。 数据库和SQL绝对是我的弱点,我真的无法找到一种正确的方法来解决这个问题。最初的想法是在数据库中为每个User / Victim提供他们自己的Table,然后在其他UserId表中提出检查游戏的问题,会很快变得混乱。

我可能还应该在listview适配器中添加这个,所以每个listview项的f.id更改,这些检查也发生在每个listview适配器上,我意识到这不是很有效但我的主要关注点正在开始工作,然后从那里进行优化。

另外需要注意的是,我的“新游戏”按钮工作得很好,我认为第二个按钮几乎就是同样的东西,但无论我在哪个方面工作,它都行不通,我'我确定它只是在俯视。 任何想法的家伙?

好吧我已经把它缩小到这样一个事实:用于检查游戏是否已被这个人发起的SQL语句没有返回任何内容,所以这显然是我出错的地方但是我无法想象出了什么问题,我尝试了各种各样的事情!

1 个答案:

答案 0 :(得分:0)

不要选择某人已经在比赛的所有球员。相反,查询类似:

SELECT `uniqueID` 
FROM currentgames 
WHERE (`victim` = '$victim' AND `rival` = '$rival')
OR (`victim` = '$rival' AND `rival` = '$victim');

这样,您要么返回一行,要么不返回,并且您不需要检查返回的行以查看其中一行是否有问题。这也应该使您的Accept逻辑变得更容易。