Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java应用程序提供整数的随机输出_Java_Mysql_Bukkit - Fatal编程技术网

Java应用程序提供整数的随机输出

Java应用程序提供整数的随机输出,java,mysql,bukkit,Java,Mysql,Bukkit,我的Java应用程序一直存在一个问题,每次用户完成一个动作时,我都会在数据库中给他们一定数量的“点数”。32个数据库点等于一个ingame点。当用户执行某个操作时,将运行一个方法来查看点是否是32的倍数,然后在将数据库中的点除以32后,表示您拥有skypoints。在用户完成操作一定次数后,它会停止工作,并在每次用户执行操作时返回0,即使是32的倍数。下面是输出的屏幕截图,代码位于下面,让您了解我所掌握的内容 截图: 我的数据库类中的代码 public long getPoints(Strin

我的Java应用程序一直存在一个问题,每次用户完成一个动作时,我都会在数据库中给他们一定数量的“点数”。32个数据库点等于一个ingame点。当用户执行某个操作时,将运行一个方法来查看点是否是32的倍数,然后在将数据库中的点除以32后,表示您拥有skypoints。在用户完成操作一定次数后,它会停止工作,并在每次用户执行操作时返回0,即使是32的倍数。下面是输出的屏幕截图,代码位于下面,让您了解我所掌握的内容

截图:

我的数据库类中的代码

public long getPoints(String uuid) {
    long points = 0;
    try {
    // Open a connection
    Connection conn = DriverManager.getConnection(DB_URL, USER, PASS);
    Statement stmt = conn.createStatement();

    // Execute a query
    stmt = conn.createStatement();

    String sql = "SELECT playerpoints FROM SkyPoints.players WHERE playerid='" + uuid + "';";
    ResultSet rs = stmt.executeQuery(sql);
    while(rs.next()) {
        points = rs.getLong("playerpoints") / 32;
    }
    } catch (SQLException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    }
    return points;
}

public long getRawPoints(String uuid) {
    long points = 0;
    try {
    // Open a connection
    Connection conn = DriverManager.getConnection(DB_URL, USER, PASS);
    Statement stmt = conn.createStatement();

    // Execute a query
    stmt = conn.createStatement();

    String sql = "SELECT playerpoints FROM SkyPoints.players WHERE playerid='" + uuid + "';";
    ResultSet rs = stmt.executeQuery(sql);
    while(rs.next()) {
        points = rs.getLong("playerpoints");
    }
    } catch (SQLException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    }
    return points;
}
我的主类中的代码

    if(DatabaseObject.getRawPoints(uuid) % 32 == 0) {
        String newamount = String.valueOf(DatabaseObject.getPoints(uuid));
        String word = null;
        if(DatabaseObject.getPoints(uuid) == 1) {
            word = "Point";
        } else {
            word = "Points";
        }
        player.sendMessage(ChatColor.GRAY + "You have earned 1 Sky Point. New amount: " + ChatColor.BLUE + newamount + ChatColor.GRAY + " Sky " + word + ".");
    }
注意:UUID是用户id

谢谢你的帮助,我真的很感激

更新:收到一个sql错误

[16:58:42 WARN]: com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Data source rejected establishment of connection,  message from server: "Too many connections"
[16:58:42 WARN]:        at sun.reflect.GeneratedConstructorAccessor58.newInstance(Unknown Source)
[16:58:42 WARN]:        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
[16:58:42 WARN]:        at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
[16:58:42 WARN]:        at com.mysql.jdbc.Util.handleNewInstance(Util.java:407)
[16:58:42 WARN]:        at com.mysql.jdbc.Util.getInstance(Util.java:382)
[16:58:42 WARN]:        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1013)
[16:58:42 WARN]:        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:987)
[16:58:42 WARN]:        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:982)
[16:58:42 WARN]:        at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1116)
[16:58:42 WARN]:        at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2338)
[16:58:42 WARN]:        at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2371)
[16:58:42 WARN]:        at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2163)
[16:58:42 WARN]:        at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:794)
[16:58:42 WARN]:        at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47)
[16:58:42 WARN]:        at sun.reflect.GeneratedConstructorAccessor44.newInstance(Unknown Source)
[16:58:42 WARN]:        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
[16:58:42 WARN]:        at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
[16:58:42 WARN]:        at com.mysql.jdbc.Util.handleNewInstance(Util.java:407)
[16:58:42 WARN]:        at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:378)
[16:58:42 WARN]:        at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:305)
[16:58:42 WARN]:        at java.sql.DriverManager.getConnection(DriverManager.java:571)
[16:58:42 WARN]:        at java.sql.DriverManager.getConnection(DriverManager.java:215)
[16:58:42 WARN]:        at me.andrewyunt.SkyPoints.Database.getPoints(Database.java:159)
[16:58:42 WARN]:        at me.andrewyunt.SkyPoints.SkyPoints.onBlockBreak(SkyPoints.java:77)
[16:58:42 WARN]:        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[16:58:42 WARN]:        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
[16:58:42 WARN]:        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[16:58:42 WARN]:        at java.lang.reflect.Method.invoke(Method.java:606)
[16:58:42 WARN]:        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:296)
[16:58:42 WARN]:        at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62)
[16:58:42 WARN]:        at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:502)
[16:58:42 WARN]:        at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:487)
[16:58:42 WARN]:        at net.minecraft.server.v1_7_R4.PlayerInteractManager.breakBlock(PlayerInteractManager.java:264)
[16:58:42 WARN]:        at net.minecraft.server.v1_7_R4.PlayerInteractManager.dig(PlayerInteractManager.java:118)
[16:58:42 WARN]:        at net.minecraft.server.v1_7_R4.PlayerConnection.a(PlayerConnection.java:550)
[16:58:42 WARN]:        at net.minecraft.server.v1_7_R4.PacketPlayInBlockDig.a(SourceFile:53)
[16:58:42 WARN]:        at net.minecraft.server.v1_7_R4.PacketPlayInBlockDig.handle(SourceFile:8)
[16:58:42 WARN]:        at net.minecraft.server.v1_7_R4.NetworkManager.a(NetworkManager.java:184)
[16:58:42 WARN]:        at net.minecraft.server.v1_7_R4.ServerConnection.c(ServerConnection.java:81)
[16:58:42 WARN]:        at net.minecraft.server.v1_7_R4.MinecraftServer.v(MinecraftServer.java:731)
[16:58:42 WARN]:        at net.minecraft.server.v1_7_R4.DedicatedServer.v(DedicatedServer.java:289)
[16:58:42 WARN]:        at net.minecraft.server.v1_7_R4.MinecraftServer.u(MinecraftServer.java:584)
[16:58:42 WARN]:        at net.minecraft.server.v1_7_R4.MinecraftServer.run(MinecraftServer.java:490)
[16:58:42 WARN]:        at net.minecraft.server.v1_7_R4.ThreadServerApplication.run(SourceFile:628)
[16:58:42警告]:com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException:数据源拒绝建立连接,来自服务器的消息:“连接太多”
[16:58:42 WARN]:在sun.reflect.generatedconstructor或accessor58.newInstance(未知源)
[16:58:42 WARN]:在sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
[16:58:42警告]:在java.lang.reflect.Constructor.newInstance(Constructor.java:526)
[16:58:42警告]:在com.mysql.jdbc.Util.handleNewInstance(Util.java:407)
[16:58:42]:位于com.mysql.jdbc.Util.getInstance(Util.java:382)
[16:58:42警告]:位于com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1013)
[16:58:42 WARN]:位于com.mysql.jdbc.SQLError.createSQLException(SQLError.java:987)
[16:58:42警告]:在com.mysql.jdbc.SQLError.createSQLException(SQLError.java:982)
[16:58:42警告]:位于com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1116)
[16:58:42警告]:位于com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2338)
[16:58:42警告]:位于com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2371)
[16:58:42警告]:位于com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2163)
[16:58:42]:位于com.mysql.jdbc.ConnectionImpl.(ConnectionImpl.java:794)
[16:58:42]:在com.mysql.jdbc.JDBC4Connection.(JDBC4Connection.java:47)
[16:58:42 WARN]:在sun.reflect.GeneratedConstructorAccessor44.newInstance(未知源)
[16:58:42 WARN]:在sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
[16:58:42警告]:在java.lang.reflect.Constructor.newInstance(Constructor.java:526)
[16:58:42警告]:在com.mysql.jdbc.Util.handleNewInstance(Util.java:407)
[16:58:42警告]:位于com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:378)
[16:58:42警告]:位于com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:305)
[16:58:42警告]:位于java.sql.DriverManager.getConnection(DriverManager.java:571)
[16:58:42警告]:位于java.sql.DriverManager.getConnection(DriverManager.java:215)
[16:58:42警告]:看着我。andrewyunt.SkyPoints.Database.getPoints(Database.java:159)
[16:58:42警告]:看着我。andrewyunt.SkyPoints.SkyPoints.onBlockBreak(SkyPoints.java:77)
[16:58:42警告]:在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)
[16:58:42 WARN]:在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
[16:58:42 WARN]:在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[16:58:42 WARN]:在java.lang.reflect.Method.invoke(Method.java:606)中
[16:58:42 WARN]:位于org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:296)
[16:58:42警告]:位于org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62)
[16:58:42警告]:位于org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:502)
[16:58:42警告]:位于org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:487)
[16:58:42 WARN]:在net.minecraft.server.v1_7_R4.PlayerInteractManager.breakBlock(PlayerInteractManager.java:264)
[16:58:42 WARN]:在net.minecraft.server.v1_7_R4.PlayerInteractManager.dig(PlayerInteractManager.java:118)
[16:58:42 WARN]:在net.minecraft.server.v1_7_R4.PlayerConnection.a(PlayerConnection.java:550)
[16:58:42 WARN]:位于net.minecraft.server.v1_7_R4.PacketPlayInBlockDig.a(源文件:53)
[16:58:42 WARN]:位于net.minecraft.server.v1_7_R4.PacketPlayInBlockDig.handle(源文件:8)
[16:58:42 WARN]:位于net.minecraft.server.v1_7_R4.NetworkManager.a(NetworkManager.java:184)
[16:58:42 WARN]:位于net.minecraft.server.v1_7_R4.ServerConnection.c(ServerConnection.java:81)
[16:58:42 WARN]:位于net.minecraft.server.v1_7_R4.MinecraftServer.v(MinecraftServer.java:731)
[16:58:42 WARN]:在net.minecraft.server.v1_7_R4.indicatedserver.v(indicatedserver.java:289)
[16:58:42 WARN]:位于net.minecraft.server.v1_7_R4.MinecraftServer.u(MinecraftServer.java:584)
[16:58:42 WARN]:在net.minecraft.server.v1_7_R4.MinecraftServer.run(MinecraftServer.java:490)
[16:58:42 WARN]:在net.minecraft.server.v1_7_R4.ThreadServerApplication.run(源文件:628)
数据源拒绝建立连接,来自服务器的消息:“连接太多”


您需要在使用完
连接
结果集
后关闭它们,否则,即使您没有使用它们,也会感觉您仍然在使用它们执行查询

要关闭
连接
结果集
,只需使用
variableName.close()。因此,例如,您应该使用:

connection.close();
resultset.close();
Connection conn = DriverManager.getConnection(DB_URL, USER, PASS);
//set the query, create the statement

ResultSet rs = stmt.executeQuery(sql);
//get values

conn.close();
rs.close();

//return values
对于您的代码,您应该使用:

connection.close();
resultset.close();
Connection conn = DriverManager.getConnection(DB_URL, USER, PASS);
//set the query, create the statement

ResultSet rs = stmt.executeQuery(sql);
//get values

conn.close();
rs.close();

//return values
出现错误的原因是MySQL认为您仍然在使用所有这些