在Java中的MySql数据库中查找使用相同IP的玩家列表
我在Mysql数据库中记录服务器上玩家的连接,有一个名为IPDataBase的表。我想检查一个用户是否使用具有相同IP的多个帐户 该表大致如下所示:在Java中的MySql数据库中查找使用相同IP的玩家列表,java,sql,search,Java,Sql,Search,我在Mysql数据库中记录服务器上玩家的连接,有一个名为IPDataBase的表。我想检查一个用户是否使用具有相同IP的多个帐户 该表大致如下所示: PlayerName | IP Player1 | 0.0.0.0 Player2 | 0.0.0.1 Player1 | 0.0.0.2 当然,使用非真实的例子。我想说的是,同一个球员的名字可以在那里,但有不同的IP。因此,一旦一个播放器连接起来,它
PlayerName | IP
Player1 | 0.0.0.0
Player2 | 0.0.0.1
Player1 | 0.0.0.2
当然,使用非真实的例子。我想说的是,同一个球员的名字可以在那里,但有不同的IP。因此,一旦一个播放器连接起来,它就会检查同一个播放器是否已经用相同的ip登录,如果不是这样,它会插入一个新行
我现在有一个布尔方法,它应该返回是否有具有相同ip的播放器。到目前为止,我的代码是:
注意:由于它用于Bukkit插件,因此类型Player是Player,字符串Playername由Player.getName获得
public boolean checksameip(Player player, String IP){
boolean ret = false;
String playername = player.getName();
try{
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/WebCom", "root", "MyPW");
Statement stmt = (Statement) con.createStatement();
ResultSet rs = stmt.executeQuery("SELECT PlayerName FROM IPDataBase WHERE IP='"+IP+"'");
if(rs.next()){
//there are results
//have no clue what to put here :S
}else{
ret = false;
}
con.close();
}catch(Exception e){
logm("Could Not Send Data To MYSQL DATABASE SERVER");
}
return ret;
}
据我所知,你想让所有的球员谁共享相同的IP?这样做:
public String[] getPlayersWithIP(String ip) {
try{
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/WebCom", "root", "MyPW");
Statement stmt = (Statement) con.createStatement();
ResultSet rs = stmt.executeQuery("SELECT PlayerName FROM IPDataBase WHERE IP='"+ip+"'");
HashSet<String> result = new HashSet<String>();
int i=0;
while(rs.next()){
result.add(getString("PlayerName"));
}
con.close();
return result.toArray(new String[0]);
}catch(Exception e){
logm("Could Not Send Data To MYSQL DATABASE SERVER");
return new String[0];
}
}
返回一个字符串数组,其中包含拥有IP的所有不同玩家姓名。如果数据库中没有具有该IP的播放机,或者抛出异常,则返回空数组。如果返回的数组大小大于1,则两个或多个具有相同IP的用户将登录到您的服务器。将DB返回的播放机名称与传入方法中的播放机名称进行比较如何。如果有用户不是传递给方法的用户,则多个a/c已用于同一IP。请注意,对于同一路由器后面的多个用户,IP号码将是相同的。我知道,但这并不重要。因为我不会阻止他们连接,我只会记录它。回响@ Trbjjrnravnnordel森,考虑一个典型的游戏派对,在那里你有一群人在同一个NAT路由器后面玩你的游戏…在您看来,它们都将使用单个IP。记录这个对你有什么价值?那会有用是的,但我想找出同一个ip背后的所有人,可能不止两个。。。我如何创建一个循环,返回每个使用相同ip的玩家。