0

マインクラフトのプラグインです。構成で設定された顧客 ID を使用してプレーヤーをプルし、ゲーム内に表示することになっています。代わりに、顧客 ID に関係なく、全員をプルします。

if(cmd.getName().equalsIgnoreCase("getaward"))
    {
        Player player = (Player)sender;
        try {
            Class.forName("com.mysql.jdbc.Driver");

        con = DriverManager.getConnection (dbUrl,dbUser,dbPass);

    Statement stmt = con.createStatement();
    ResultSet rs = stmt.executeQuery("SELECT * FROM `votesdb` WHERE `nick` = '"+player.getName().substring(0,player.getName().length()/2)+"' AND `customer_id` LIKE "+config.getString("customer_id")+"");
    //ResultSet rs = stmt.executeQuery("SELECT nick,votes FROM `votesdb` WHERE nick='"+player.getName()+" LIMIT 1");
    if(rs.next())
    {
        if(rs.getInt("votes")!=0)
        {
            player.sendMessage(ChatColor.GREEN+"[VFD]"+ChatColor.AQUA+"Thanks for voting! You will find something special in your inventory. :)");
            bukkit.broadcastMessage(ChatColor.GREEN+"[VFD]"+ChatColor.AQUA+player.getDisplayName()+" has been rewarded for Voting for the Server!");
            stmt.executeUpdate("UPDATE `votesdb` SET flag=0 WHERE `nick` LIKE '"+player.getDisplayName().substring(0,player.getDisplayName().length()/2)+"'");
            player.getInventory().addItem(new ItemStack(this.matID,this.matAmt));


        }
        else
        {
            player.sendMessage(ChatColor.RED+"You have already claimed your reward.");
        }   
    }
    else
    {
        player.sendMessage(ChatColor.RED+"We could not find you in the database! Please make sure you used the correct name when you voted!");
    }
4

1 に答える 1

1
  1. クエリをできるだけ簡単にし、それが機能することを確認してから、目標に向かって構築します。
  2. 顧客ID以外の条件を持つことは意味がありません。その顧客IDを持つすべてのプレーヤーが必要だとあなたは言いました。
  3. すでに述べたように、IDは、文字列のようにではなく、単一の値に制限されることになっています。
于 2012-04-14T11:16:04.250 に答える