java - SQL 查询正在提取所有内容?

标签 java mysql sql minecraft

这是我的世界的插件。它应该拉出配置中设置的客户 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!");
    }

最佳答案

  1. 让您的查询尽可能简单,看看它是否有效,然后才朝着您的目标迈进。
  2. 除了客户 ID 之外,任何其他条件都没有意义。您说过您需要所有具有该客户 ID 的玩家。
  3. 如前所述,ID 应该限制为单个值,而不是像某个字符串。

关于java - SQL 查询正在提取所有内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10152730/

相关文章:

Java类型安全警告

php - 选择并锁定一行然后更新

php - 数据库设计/ERD - 测验引擎

mysql - MYSQL 对新索引数据的查询意外缓慢

sql - WHERE 子句中的 "Conditional Conditions"(应用哪个条件取决于 "mode"标志)

java - 为什么 Spring 和 Struts MVC 为其 Controller 类实现单例模式?

java - 将循环中的扫描仪值初始化为数组

java - 如何将依赖项打包到输出 jar 中?

sql - 重新启动,以便 nextval 是下一个未使用的 id

mysql - 如何在 MYSQl 中合并具有两个共同列的多个表